数値型セルで IME モードが切り替わらない場合がある
対象製品
El Tabelle for .NET 3.0J
発生環境
この現象は、次のファイルバージョンのアセンブリで発生します。
v3.2.2006.720 および以前のアセンブリ
v3.2.2006.720 および以前のアセンブリ
状況
修正済み
詳細
次の設定と操作を行ったとき、数値型セルの IME モードが切り替わりません。
1. 数値型セルの IME モードを Disable に設定する
2. 数値型セルの隣に文字列型セルを用意し IME モードを On に設定する
3. 数値型セルに数値を入力した後、文字列型セルに移動し、また数値型セルに戻る。
1. 数値型セルの IME モードを Disable に設定する
2. 数値型セルの隣に文字列型セルを用意し IME モードを On に設定する
3. 数値型セルに数値を入力した後、文字列型セルに移動し、また数値型セルに戻る。
回避方法
この現象は、ファイル バージョン v3.2.2006.0915 以降のアセンブリで修正されています。
修正版は こちら からダウンロードできます。
または、EnteredCell イベントで IME モードを再設定することで現象を回避できます。
・Sheet の場合
[Visual Basic]
Private Sub Sheet1_EnteredCell(ByVal sender As Object, ByVal e As System.EventArgs) Handles Sheet1.EnteredCell
If Sheet1.ActivePosition.Column = 0 Then
Sheet1.ActiveCell.ImeMode = Windows.Forms.ImeMode.Disable
End If
End Sub
[C#]
private void sheet1_EnteredCell(object sender, EventArgs e)
{
if(sheet1.ActivePosition.Column == 0)
{
sheet1.ActiveCell.ImeMode = ImeMode.Disable;
}
}
・MultiRowSheet の場合
[Visual Basic]
Private Sub MultiRowSheet1_EnteredCell(ByVal sender As Object, ByVal e As System.EventArgs) Handles MultiRowSheet1.EnteredCell
If MultiRowSheet1.ActivePosition.Column = 0 Then
MultiRowSheet1.ActiveCell.ImeMode = Windows.Forms.ImeMode.Disable
End If
End Sub
[C#]
private void multiRowSheet1_EnteredCell(object sender, EventArgs e)
{
if(multiRowSheet1.ActivePosition.Column == 0)
{
multiRowSheet1.ActiveCell.ImeMode = ImeMode.Disable;
}
}
修正版は こちら からダウンロードできます。
または、EnteredCell イベントで IME モードを再設定することで現象を回避できます。
・Sheet の場合
[Visual Basic]
Private Sub Sheet1_EnteredCell(ByVal sender As Object, ByVal e As System.EventArgs) Handles Sheet1.EnteredCell
If Sheet1.ActivePosition.Column = 0 Then
Sheet1.ActiveCell.ImeMode = Windows.Forms.ImeMode.Disable
End If
End Sub
[C#]
private void sheet1_EnteredCell(object sender, EventArgs e)
{
if(sheet1.ActivePosition.Column == 0)
{
sheet1.ActiveCell.ImeMode = ImeMode.Disable;
}
}
・MultiRowSheet の場合
[Visual Basic]
Private Sub MultiRowSheet1_EnteredCell(ByVal sender As Object, ByVal e As System.EventArgs) Handles MultiRowSheet1.EnteredCell
If MultiRowSheet1.ActivePosition.Column = 0 Then
MultiRowSheet1.ActiveCell.ImeMode = Windows.Forms.ImeMode.Disable
End If
End Sub
[C#]
private void multiRowSheet1_EnteredCell(object sender, EventArgs e)
{
if(multiRowSheet1.ActivePosition.Column == 0)
{
multiRowSheet1.ActiveCell.ImeMode = ImeMode.Disable;
}
}
キーワード
ELTB05426
この文書は、以前は次のバグレポートIDで公開されていました : 6396