タッチスクリーン アプリケーション用に数字キーパッドを表すフォームを作成しました。これ0123456789
には、コンマ キーと共にキーが含まれています,
。各キーは、設計時に設定した Key というプロパティを持つカスタム コントロールのインスタンスです。
<Browsable(True),
DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)>
Private _key As Char
Property Key As Char
Get
Return _key
End Get
Set(value As Char)
_key = value
Me.Text = _key
End Set
End Property
押されたキーを簡単に見つけるために、含まれているフォームHashSet
ですべてのキーを使用してa を作成します。
Private keys As HashSet(Of Char)
....
For Each c As Control In ...
keys.Add(...)
Next
KeyDown
次に、イベントをリッスンします。
AddHandler Me.KeyDown, AddressOf KeyHasBeenPressed
次に、ハンドラーで次のようにします。
Private Sub KeyHasBeenPressed(sender As Object, e As KeyEventArgs)
If keys.Contains(ChrW(e.KeyValue)) Then
' handle the key pressed event...
End If
End Sub
問題はコンマ,
キーにあります。Key
プロパティはデザイナで に設定されています,
が、 と が原因で実行時にテストkeys.Contains
が失敗しe.KeyValue=188
ますe.KeyCode=Oemcomma {188}
。
この状況を処理する最善の方法は何でしょうか? コンマやおそらくバックスペースキーなどの「特別な」キーを使用したい。
i8n も考慮してください。私の物理的なテンキーにはドット.
が表示されますが、押されたときは常にコンマとして扱われなければなりません,
。