まず通常のコントロールでEnterキーと上下矢印キーのデフォルト操作をまとめました。
使用した機種はX04HTです。機種によりデフォルト操作が異なります。
コントロール | Enterキー | 上下矢印キー |
---|---|---|
TextBox | 動作なし | 動作なし |
ComboBox | ドロップダウンリストの展開 | リストアイテムの選択 |
DateTimePicker | カレンダーの表示 | 値のインクリメント |
NumericUpDown | 動作なし | 値のインクリメント |
CheckBox | チェックON/OFF | コントロールの移動 |
RadioButton | 動作なし | コントロールの移動 |
LinkLabel | Clickイベント発生 | コントロールの移動 |
Button | Clickイベント発生 | コントロールの移動 |
TextBoxではMultiLineプロパティがFalseであればコントロールを移動するようにします。
Enterキーではモバイル開発 TextBoxのTextAlignプロパティの対策を入れる必要もあります。
ComboBox、DateTimePickerではEnterキーのデフォルト操作「ドロップダウンリストの展開」は残し、上下矢印キーはドロップダウンリストが展開していない場合はコントロールを移動とすると操作性が良いと思います。
ドロップダウンが展開しているかどうかはモバイル開発 Controlのドロップダウンが展開されているかを取得するを見てください。
NumericUpDownはどうしますか・・・
コントロールをEnterキーで移動するサンプル
Private Sub KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Select Case e.KeyChar Case Chr(Keys.Enter) Call Api.keybd_event(Api.VK_TAB, 0, 0, 0) Call Api.keybd_event(Api.VK_TAB, 0, Api.KEYEVENTF_KEYUP, 0) e.Handled = True End Select End Sub
コントロールを上下矢印キーで移動するサンプル
Private Sub KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Select Case e.KeyCode Case Keys.Up Call Api.keybd_event(Api.VK_SHIFT, 0, 0, 0) Call Api.keybd_event(Api.VK_TAB, 0, 0, 0) Call Api.keybd_event(Api.VK_TAB, 0, Api.KEYEVENTF_KEYUP, 0) Call Api.keybd_event(Api.VK_SHIFT, 0, Api.KEYEVENTF_KEYUP, 0) e.Handled = True Case Keys.Down Call Api.keybd_event(Api.VK_TAB, 0, 0, 0) Call Api.keybd_event(Api.VK_TAB, 0, Api.KEYEVENTF_KEYUP, 0) e.Handled = True End Select End Sub
API
Public Class Api Public Const VK_SHIFT As Integer = &H10 Public Const VK_TAB As Integer = &H9 Public Const KEYEVENTF_KEYUP As Integer = &H2_ Public Shared Function keybd_event(ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Integer, ByVal dwExtraInfo As Integer) As Integer End Function End Class
0 件のコメント:
コメントを投稿