DataGridViewで列によりIMEモードを変える
DataGridViewで列(カラム)により、IME制御を変更したいってニーズは多いと思う。
以下、ColumnIndexにより、IMEモードを変更する例
例として
Form1上に、dataGridView1があると仮定する。
Form1_Loadイベントで、DataGridViewのCellEnterイベント設定を仕込んでおく。
// フォームロードイベント private void FormUser_Load(object sender, EventArgs e) { // データグリッドビューのイベントハンドラ設定 DataGridViewEvent(); }
private void DataGridViewEvent() { // 現在のセルが変更された場合に発生 dataGridView1.CellEnter += new DataGridViewCellEventHandler(dataGridView_CellEnter); }
// DataGridViewのセル入力フォーカス時イベント private void dataGridView1_CellEnter(object sender, System.Windows.Forms.DataGridViewCellEventArgs e) { switch (e.ColumnIndex) { case 0: case 5: case 7: case 9: case 10: //この列はIME無効(半角英数のみ) dataGridView1.ImeMode = System.Windows.Forms.ImeMode.Disable; break; case 1: case 2: case 8: //この列は日本語入力ON(ひらがな) dataGridView1.ImeMode = System.Windows.Forms.ImeMode.Hiragana; break; case 3: case 4: //この列は日本語入力ON(半角カタカナ) dataGridView1.ImeMode = System.Windows.Forms.ImeMode.KatakanaHalf; break; } }
VBAのSELECT CASEに慣れてたからこれはすんなりとできた。