.net4.5のWindows Formsで確認しています。
テキストボックスの
「きー」と入力して、「キー」に変換して
エンターキーを入力した場合と、「1」キーを入力した場合で、
OnKeyPress挙動が違います。
なぜでしょうか。
エンターキーを押下した場合
※[Enter]キー押下 WM_KEYDOWN:[1835009],[229] WM_IME_CHAR:[1],[12461] OnKeyPress:[キ] WM_IME_CHAR:[1],[12540] OnKeyPress:[ー] WM_CHAR:[1],[12461] OnKeyPress:[キ] WM_CHAR:[1],[12540] OnKeyPress:[ー] WM_KEYUP:[-1071906815],[13] OnKeyUp:[13]
[1]キーを押下した場合
※[1]キー押下 WM_KEYDOWN:[131073],[229] WM_IME_CHAR:[1],[12461] OnKeyPress:[キ] WM_IME_CHAR:[1],[12540] OnKeyPress:[ー] WM_CHAR:[1],[12461] WM_CHAR:[1],[12540] WM_KEYUP:[-1073610751],[49] OnKeyUp:[49]
ソースコード
Public MustInherit Class TextBaseControl Inherits System.Windows.Forms.TextBox Protected Overrides Sub WndProc(ByRef m As Message) If m.Msg = &H286 Then 'WM_IME_CHAR Debug.Print("WM_IME_CHAR:[" & m.LParam.ToString & "],[" & m.WParam.ToString & "]") ElseIf m.Msg = &H102 Then 'WM_CHAR Debug.Print("WM_CHAR:[" & m.LParam.ToString & "],[" & m.WParam.ToString & "]") ElseIf m.Msg = &H100 Then 'WM_KEYDOWN Debug.Print("WM_KEYDOWN:[" & m.LParam.ToString & "],[" & m.WParam.ToString & "]") ElseIf m.Msg = &H101 Then 'WM_KEYUP Debug.Print("WM_KEYUP:[" & m.LParam.ToString & "],[" & m.WParam.ToString & "]") End If MyBase.WndProc(m) End Sub Protected Overrides Sub OnKeyPress(e As KeyPressEventArgs) Debug.Print("OnKeyPress:[" & e.KeyChar & "]") MyBase.OnKeyPress(e) End Sub Protected Overrides Sub OnKeyUp(e As KeyEventArgs) Debug.Print("OnKeyUp:[" & e.KeyValue.ToString & "]") MyBase.OnKeyUp(e) End Sub End Class

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/03/27 10:08
2019/03/27 13:45