- - PR -
[Ctrl]キーを押下しながらボタンクリック時の判定
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-06-11 11:48
お世話になります。
vb.netでWindowaフォームを作成しています。 そこでボタン[A]をクリックした時の処理と、 [Ctrl]キーを押下しながらボタン[A]をクリックした時とで処理を分けたいと思っています。 「[Ctrl]キーを押下しながら」という判定ができません。 どなたか御教授お願いします。 | ||||
|
投稿日時: 2007-06-11 12:40
おそらく「KeyDown」イベントを使ってキーの押下状態を取得していると思うのですが、そうであれば「KeyEventArgs e」引数から「e.Control」で取得することができます。
こんな感じ。
| ||||
|
投稿日時: 2007-06-11 12:43
ごめんなさい。VB.net でしたね(^^;
| ||||
|
投稿日時: 2007-06-11 13:26
もしVB2005なら
てな感じでいかがでしょうか。 | ||||
|
投稿日時: 2007-06-11 13:36
オノデラさん
返信ありがとうございます。 教えて頂いた方法は既に試していたのですが、キーイベントは取得できませんでした。 再度試してみましたが、やはり結果は同じでした。 (キーを押しても「Form1_KeyDown」に入ってこない) テキストボックス等では問題なく取得できるのですが・・・ コード間違い等を避ける為、教えて頂いたコードをコピーしてもダメでした。 また、うまくいった場合はグローバルなフラグを用意してKeyDownでOn、KeyUpでOffといった形になるのでしょうか? | ||||
|
投稿日時: 2007-06-11 13:39
IIJIMASさん
返信ありがとうございます。 VB2005を使用しています。 教えて頂いた方法試してみました。 期待通りの動作となりました。 ありがとうございました。 | ||||
|
投稿日時: 2007-06-11 15:10
もう解決したみたいですが、.NET Framework 1.x (2002 && 2003), .NET Framework 2.0 (2005) 問わず、以下の方法でできます。
ちなみにオノデラさんの方法は KeyDown イベントでのお話ですので、Click 時にどうこうできません。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2007-06-11 15:26
じゃんぬねっとさん
返信ありがとうございます。 教えて頂いた方法でも実現できました。 ちなみに If (System.Windows.Forms.Control.ModifierKeys And Keys.Shift) = Keys.Shift Then ではなく If System.Windows.Forms.Control.ModifierKeys = Keys.Shift Then でも問題ないですか? (動作的には問題ありませんでした) 「And Keys.Shift」の部分がよく理解できなかったので、変更してみました。 |