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に慣れてたからこれはすんなりとできた。