|
分類:[VB.NET/VB2005]
はじめまして、こんにちは。 いつも拝見させていただいております。
今回は、MaskedTextBoxでの誤動作を確認しましたので、確認および回避策を頂きたく、投稿させていただきました。
開発環境 OS:WindowsXP Pro SP2 言語:VisualBasic2005 Pro SP1 アプリ:WindowsApplication
誤動作発生状況 1.MaskedTextBoxコントロールのKeyDownイベントで、Enterキーを拾い、モーダルなダイアログを表示します。 2.表示したダイアログを閉じ、続けて数値をいくつか入力しますと、誤動作が発生します。(予期せぬ位置にスペースが入る、入力が無効になるなど)
再現プログラム 1.フォームを作成します。(フォーム名:Form1) 2.Form1にMaskedTextBoxコントロールを作成します。(コントロール名:mskDate、Maskプロパティ:0000/00/00) -------以下 Form1ソース ---------------- Public Class Form1
Private Sub mskDate_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles mskDate.KeyDown If (e.KeyCode = Keys.Enter) Then MsgBox("") End If End Sub
End Class ----------------------------------------
再現動作 1.mskDateにEnterキーを入力します。 2.メッセージボックスを閉じ、続けて数字キーを数回入力しますと、誤動作が発生します。
回避策 Enterキー処理を、KeyDownではなくKeyPressイベントで処理することにより、回避できます。 ただ、Shiftキー等の押下状態を簡潔に取得できるため、KeyDownイベントで処理ができればと考えております。
その他 マスクを設定しない場合、誤動作は発生しません。 Enterキー以外でダイアログを表示した場合、誤動作は発生しません。
以上ですが、回避策などありましたら、ご教授おねがいいたします。
|