[ELTB05971]半角文字を入力しても、一文字目が全角、一文字目以降が半角になる場合がある。
対象製品
El Tabelle for .NET 3.0J
発生環境
動作保証環境と同じ
詳細
次の条件を満たす時、IMEの設定が半角(#1)でも最初の1文字目の入力が全角になります。(#1:例えば、IMEの設定でテンキーからの入力は「常に半角」とし、テンキーから入力する場合)
1) セルのIMEモード(ImeMode)プロパティに、Windows.Forms.ImeMode.On、Windows.Forms.ImeMode.Hiragana、またはWindows.Forms.ImeMode.Katakanaなどを設定し IMEを使用する設定を行っている。
2) 1)が設定されているセルに対して、シート非編集時に、半角の値を入力する。
例えば、"555"を入力しても、セルには"555"が入力されます。
1) セルのIMEモード(ImeMode)プロパティに、Windows.Forms.ImeMode.On、Windows.Forms.ImeMode.Hiragana、またはWindows.Forms.ImeMode.Katakanaなどを設定し IMEを使用する設定を行っている。
2) 1)が設定されているセルに対して、シート非編集時に、半角の値を入力する。
例えば、"555"を入力しても、セルには"555"が入力されます。
回避方法
KeyDownイベントを作成し、入力時に編集モードにすることで回避します。
WorkBook/Sheet コントロール
VB:
C#:
MultiRowSheetコントロール
VB:
C#:
WorkBook/Sheet コントロール
VB:
Private Sub Sheet1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Sheet1.KeyDown
If Sheet1.EditState = False Then
If e.KeyData = Keys.ProcessKey Then
Sheet1.KeyAction(KeyAction.EnterEdit)
End If
End If
End Sub
If Sheet1.EditState = False Then
If e.KeyData = Keys.ProcessKey Then
Sheet1.KeyAction(KeyAction.EnterEdit)
End If
End If
End Sub
C#:
private void sheet1_KeyDown(object sender, KeyEventArgs e)
{
if (sheet1.EditState == false) {
if (e.KeyData == Keys.ProcessKey)
{
sheet1.KeyAction(KeyAction.EnterEdit);
}
}
}
{
if (sheet1.EditState == false) {
if (e.KeyData == Keys.ProcessKey)
{
sheet1.KeyAction(KeyAction.EnterEdit);
}
}
}
MultiRowSheetコントロール
VB:
Private Sub MultiRowSheet1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MultiRowSheet1.KeyDown
If MultiRowSheet1.EditState = False Then
If e.KeyData = Keys.ProcessKey Then
MultiRowSheet1.KeyAction(MKeyAction.EnterEdit)
End If
End If
End Sub
If MultiRowSheet1.EditState = False Then
If e.KeyData = Keys.ProcessKey Then
MultiRowSheet1.KeyAction(MKeyAction.EnterEdit)
End If
End If
End Sub
C#:
private void multiRowSheet1_KeyDown(object sender, KeyEventArgs e)
{
if (multiRowSheet1.EditState == false) {
if (e.KeyData == Keys.ProcessKey)
{
multiRowSheet1.KeyAction(MKeyAction.EnterEdit);
}
}
}
{
if (multiRowSheet1.EditState == false) {
if (e.KeyData == Keys.ProcessKey)
{
multiRowSheet1.KeyAction(MKeyAction.EnterEdit);
}
}
}
この文書は、以前は次のFAQ IDで公開されていました : 6857