トップ回答者
DataGridViewのIMEモード変更

質問
-
VB2005でWindowsアプリケーションを作成しています。
フォーム上にDataGridViewを置き、いくつかの列(商品コード、商品単価、備考など)を追加しました。
通常のTextBoxならばプロパティにIMEモードが指定できて、カーソルが来たときに自動的にIMEのOnやOffができるのですが
DataGridViewのColumnsコレクション内にそれらを指定する項目が見つかりません。
どのようにすると、IMEモードを切り替えることができるのでしょうか。DataGridView自体にはIMEモードが指定できるので、CellEnterイベントでCurrentCell.OwningColumn.Nameによって
Me.ImeMode = Windows.Forms.ImeMode.Hiraganaなんて事は可能だと思いますが、、
それ以外には指定方法がないでしょうか。よろしくお願いします。
回答
-
Edit時に表示されるのはEditingControlのTextBoxですから、これに対してIMEをセットしてあげれば良いでしょう。
C#ですが良いサンプルがありました。
DataGridView のColumn ごとに IME モードをセットする
http://momotchi.net/forums/p/1017/1293.aspx#1293
すべての返信
-
Edit時に表示されるのはEditingControlのTextBoxですから、これに対してIMEをセットしてあげれば良いでしょう。
C#ですが良いサンプルがありました。
DataGridView のColumn ごとに IME モードをセットする
http://momotchi.net/forums/p/1017/1293.aspx#1293 -
以下のような感じで独自のDataGridViewのカラムを作成します。DataGridViewTextBoxEditingControlがテキストボックスに相当しますので、こいつのImeModeを設定するようなプロパティを設けてしまうことも考えられます。
以下のmyDataGridViewTextBoxColumnはデザイン画面からColumnTypeとして選択できますが、それ以上のものはないので、デザイナからではImeModeの設定は難しそうですね。たぶん・・・// Column
public class myDataGridViewTextBoxColumn : DataGridViewTextBoxColumn
{
public myDataGridViewTextBoxColumn()
{
base.CellTemplate = new myDataGridViewTextBoxCell();
}
}// Cell
public class myDataGridViewTextBoxCell : DataGridViewTextBoxCell
{
public override Type EditType
{
get
{
return typeof(myDataGridViewTextBoxEditingControl);
}
}
}// EditingControl
public class myDataGridViewTextBoxEditingControl : DataGridViewTextBoxEditingControl
{}