tonkunの備忘録

色々調べた事、試した事などを載せます

「Windows10でDataGridViewに2文字入力されちゃう」が直っているようで直っていなかった

バリバリWindows Formを使っているので、昨年から以下の事象に悩まされていました。

Fall Creators Update を適用後 DataGridView に文字を入力すると 2 文字入力される – JAPAN Platform SDK(Windows SDK) Support Team Blog

Windows 10 April 2018 Update(バージョン 1803)がいつの間にか開発環境に入ってしまったので、ついでに直っているか確認してみました。

f:id:tonkun_no:20180521194650p:plain

2文字入力は直っていて一見問題無さそうに見えたのですが、どうも実際に開発しているアプリだと挙動がおかしく 「さ」が「sあ」になる場合が出てきています。(母音以外がおかしい)

アプリ側ではフォーカスしている列によってIMEを切り替えているので、
以下のテストプログラムで試してみました。

        public Form1()
        {
            InitializeComponent();
            this.dataGridView1.CellEnter += dataGridView1_CellEnter;
        }

        private void dataGridView1_CellEnter(object sender, DataGridViewCellEventArgs e)
        {
            switch (e.ColumnIndex)
            {
                case 0:
                    this.dataGridView1.ImeMode = ImeMode.Hiragana;
                    break;
                default:
                    this.dataGridView1.ImeMode = ImeMode.Off;
                    break;
            }
        }

実行してみると、起動直後に入力した場合に入力がおかしくなっています。

f:id:tonkun_no:20180521195613p:plain

この場合は、次の行とかは問題無さそうです。(実際の業務アプリの方は次の行でも問題になっているので、何か条件があるのかもしれません)

現時点ではもの凄いダサい回避方法でお茶を濁しています。orz

        private void dataGridView1_CellEnter(object sender, DataGridViewCellEventArgs e)
        {
            switch (e.ColumnIndex)
            {
                case 0:
                    this.dataGridView1.ImeMode = ImeMode.Hiragana;
                    this.dataGridView1.BeginEdit(false);    // add
                    this.dataGridView1.EndEdit();           // add
                    break;
                default:
                    this.dataGridView1.ImeMode = ImeMode.Off;
                    break;
            }
        }

Microsoftさんもうちょっときちんと直して。お願いします(´・ω・)