[FlexGrid for WinForms] 列のImeModeをカスタムエディタのImeModeと同じ値に設定しても、有効にならない

文書番号 : 82165     文書種別 : 既知の問題     登録日 : 2017/05/24     最終更新日 : 2017/05/24
文書を印刷する
対象製品
ComponentOne for WinForms
ステータス
回避方法あり
詳細
編集状態に入るときにC1FlexGridのImeModeを列のカスタムエディタのImeModeに設定しても、セルを編集する前のみ有効で、いったん編集を行った後は、列を移動してもC1FlexGridのImeModeの値が切り替わらなくなります。
回避方法
各列のカスタムエディタのImeModeの値を、いったん別の変数にコピーしてArrayListに保存おき、BeforeEditイベント内で、各列に対するこのImeModeの値を指定します。

◎サンプルコード(VB)
Dim im0 , im1 As ImeMode
Dim imeCols As New ArrayList()
Private Sub Form1_Load(sender As Object, e As EventArgs)
  im0 = txtHiragana.ImeMode
  im1 = txtKatakana.ImeMode
  imeCols.Add(im0)
  imeCols.Add(im1)
End Sub
Private Sub C1FlexGrid1_BeforeEdit(sender As Object, e As RowColEventArgs)
  If e.Col < 2 Then
    C1FlexGrid1.ImeMode = DirectCast(imeCols(e.Col), ImeMode)
  End If
End Sub

◎サンプルコード(C#)
ImeMode im0, im1;
ArrayList imeCols = new ArrayList();
private void Form1_Load(object sender, EventArgs e)
{
・・・(途中省略)・・・
  im0 = txtHiragana.ImeMode;
  im1 = txtKatakana.ImeMode;
  imeCols.Add(im0);
  imeCols.Add(im1);
}
private void c1FlexGrid1_BeforeEdit(object sender, RowColEventArgs e)
{
  if (e.Col < 2) c1FlexGrid1.ImeMode = (ImeMode)imeCols[e.Col];
}