- ベストアンサー
ショートカットキーの変更をしたい
VB.NET2003で開発中です。 フォームにコンボボックスを配置して、ファンクションキーのF4を押すと、ドロップダウンリストが表示されますが、これを別のキーに割り当て、F4キーを別の処理でしよう出来る用にしたいのですが方法が分かりません。 Windows標準のショートカットキーを変更する方法は無いのでしょうか。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
>ドロップダウンを他のキーに割り当てる方法をご存知でしたら教えていただけるとありがたいのですが。 えーと、F1キーにドロップダウンを割り当てているのですが No.3のコードではちゃんと動作しないと言う意味でしょうか? もし、そうであればもう少し詳しい仕様をお聞かせ願えますでしょうか?
その他の回答 (3)
- locoyama
- ベストアンサー率77% (7/9)
すみません、ご質問の「他のキーに割り当て」の部分が入ってませんでしたので、 書き直しました。 Private Sub ComboBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles ComboBox1.KeyDown Select Case e.KeyCode Case Keys.F1 Me.ComboBox1.DroppedDown = True e.Handled = True Case Keys.F4 Me.Button1.Focus() e.Handled = True End Select End Sub
お礼
回答ありがとうございます。 教えていただいたソースでうまくいきました。 このソースをもとに、フォームのKeyDownイベントにコントロールの種類がコンボボックスであれば、F4キーでドロップダウンをしないように出来たのですが、ドロップダウンを他のキーに割り当てる方法をご存知でしたら教えていただけるとありがたいのですが。
- locoyama
- ベストアンサー率77% (7/9)
こんな感じで良いんでしょうか? Private Sub ComboBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles ComboBox1.KeyDown ’キーコードを判別 If e.KeyCode = Keys.F4 Then ’ボタンにフォーカス Me.Button1.Focus() ’イベントを終了させる e.Handled = True Else '処理 End If End Sub
Windowsの場合は、「レジストリ」を改ざん(聞こえは悪いですが) することで、ショートカットキーが変更できます。 しかし、これは非常に高度な知識を要しますので、 はっきり言ってお薦めしません。 失敗したら何がおこるか予測すらできません。 Macintoshなら簡単にショートカットキーを自分で 設定できるのですが...
お礼
自己解決しました。 色々やってみた結果、下記のソースでうまくいきました。 Private Sub Form1_KeyDown(ByVal sender As Object,ByVal e As Sysytem.Windows.Forms.keyEventArgs) Handles MyBase.KeyDown If Type Me.ActiveControl Is Combobox then Select Case e.KeyCode Case Keys.F4 e.handled=True Case Keys.Down Dim a As Combobox a = ActiveControl a.DroppedDown = True End Select End IF End Sub 色々ありがとうございました。
補足
すいません。説明が足りませんでした。 頂いたソースでコンボボックスのKeyD フォームのKeyDownイベントで、オブジェクト名を指定するのではなく、オブジェクトの種類がコンボボックスの場合、ドロップダウンリストが表示されるようにしたいのです。 F4を無効にするのは、教えていただいたソースをもとに下記のようにしフォームのイベントで一括して処理出来るようになりました。 Private Sub Form1_KeyDown(ByVal sender As Object,ByVal e As Sysytem.Windows.Forms.keyEventArgs) Handles MyBase.KeyDown If Type Me.ActiveControl Is Combo then if e.KeyCode = Keys.F4 then e.handled=True End If End IF End Sub ドロップダウンリストを表示させるのは、やはりCombo1.DroppedDownと言う様にオブジェクト名を指定しなければならないのでしょうか? お手数ですがご存知であれば教えてください。