- PR -

[Ctrl]キーを押下しながらボタンクリック時の判定

投稿者投稿内容
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-06-11 15:32
引用:

なんとかさんの書き込み (2007-06-11 15:26) より:

If System.Windows.Forms.Control.ModifierKeys = Keys.Shift Then
でも問題ないですか?
(動作的には問題ありませんでした)


人によって問題ありかどうか分かれるかもしれません。私は動作的に問題ありだと思います。

たとえば、[Ctrl] + [Shift] で Button を Click した場合を考えてみてください。なんとかさんの実装では、[Shift] が押下されていないと判断されます。

メモ帳で [Ctrl] + [C] とすると選択中の文字列コピーされます。また [Shift] + [Ctrl] + [C] としてもコピーできます。

まあ、IE とか一部のアプリケーションでは単体でしか見ていないショートカット キーがありますから、妥当かどうかの判断は各自でお願いします。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
IIJIMAS
ベテラン
会議室デビュー日: 2006/12/06
投稿数: 77
投稿日時: 2007-06-11 15:48
引用:

なんとかさんの書き込み (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」の部分がよく理解できなかったので、変更してみました。



Andはビット積演算子です。



そう変更してしまうと、たぶん別のキーも例えばAltキーも同時に押している場合では動きが違うのではないかと思います。
ビット演算子で複数のキーの組み合わせで細かく分けることができます。

詳細は以下MSDNライブラリ(ヘルプ)などでご確認ください。

Control.ModifierKeys プロパティ
http://msdn2.microsoft.com/ja-jp/library/system.windows.forms.control.modifierkeys(VS.80).aspx

Keys 列挙体
http://msdn2.microsoft.com/ja-jp/library/system.windows.forms.keys(VS.80).aspx


Visual Basic の論理演算子とビット処理演算子
http://msdn2.microsoft.com/ja-jp/library/wz3k228a(VS.80).aspx

And 演算子 (Visual Basic)
http://msdn2.microsoft.com/ja-jp/library/sdbcfyzh(VS.80).aspx

なんとか
会議室デビュー日: 2006/09/27
投稿数: 17
投稿日時: 2007-06-11 15:57
じゃんぬねっとさん、IIJIMASさん返信ありがとうございます。

確かに複数のキーを押下した場合、動作が異なりました。
演算等を含め勉強が必要ですね。

ありがとうございました。
オノデラ
会議室デビュー日: 2007/06/05
投稿数: 10
投稿日時: 2007-06-11 16:19
よく読んでみたら「ボタン「A」」だったんですね。キーボードの「A」だと思っていました。失礼しました。

スキルアップ/キャリアアップ(JOB@IT)