|
分類:[C#]
こんにちは。
先ほどの投稿でちょろっと書いた [FlagsAttribute] というのは、列挙体をフラ グ単位で持つことが出来るという意味になります。 と言っても少し難しいかもしれませんので、少し説明を。
例えば以下のような列挙体があったとして
[FlagsAttribute] enum TEST { A = 1, B = 2 }
次のような記述が出来るわけです。
TEST x = TEST.A | TEST.B;
これは何を意味しているかと言うと、変数 x は TEST.A の値と TEST.B の値の 両方を取りうるということですね。 それを振り分けるには、それぞれの値で & を取ってみるわけです。 前回のソースで言うと ((e.Button & MouseButtons.Right) == MouseButtons.Right) のあたりがその処理になります。 このあたりは 2進数 とか ビット演算 などで調べるといいかもしれません。
話を戻して、そうなると右ボタンと左ボタンが押されているかどうかという値は e.Button でどちらか一方ではなく、両方の値をとりうるということが推測でき るかと思います。 さて
> 上記で、たとえば右クリックしたら、@で「右押された」が出力されますが、 > その後に、左ボタンを押している状態ならAの処理にはいりたいわけなのです。
の回答ですが、右クリックして@(あまり丸数字は使わないほうがいいかもしれ ませんね)の「右押された」の処理に入るとして、その状態で左ボタンが押され ていたら、それも e.Button に入っているはずです。 前回は分かりやすく別々に書きましたが、右ボタンが押されたときの処理の中で 左ボタンが押されたかどうかチェックすれば、右ボタンが押されていてなおかつ 左ボタンも押されているかどうかがわかるのではないでしょうか。
ちなみに前回のソースで左右のボタンを同時に押せば 右押された 左押された の両方が出力されるかと思いますが、それは左右のボタンの状態を個別に知るこ とが出来るからです。
もう少しかもしれませんね。がんばってください。
|