C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

マウスの左クリックを押した状態かそうでないかを判断したい


(過去ログ 5 を表示中)

[トピック内 20 記事 (1 - 20 表示)]  << 0 >>

■5336 / inTopicNo.1)  マウスの左クリックを押した状態かそうでないかを判断したい
  
□投稿者/ らん 二等兵(3回)-(2006/08/07(Mon) 17:09:04)

分類:[C#] 


分類:[C#] 

はじめまして。らんと申します。

マウスの左クリックを押した状態かそうでないかを判断したいのですが、
どうやったらとれるでしょうか?

よろしくお願い致します。

0
引用返信 編集キー/
■5337 / inTopicNo.2)  Re[1]: マウスの左クリックを押した状態かそうでないかを判断したい
□投稿者/ も 一等兵(23回)-(2006/08/07(Mon) 17:29:45)

分類:[C#] 

No5336に返信(らんさんの記事)
> はじめまして。らんと申します。
>
> マウスの左クリックを押した状態かそうでないかを判断したいのですが、
> どうやったらとれるでしょうか?
>
> よろしくお願い致します。
MouseDownイベント/MouseUpイベントで、マウスのボタンの状態を把握する構造にしてみては?
※「右クリックを押した状態」というのがイマイチわかりませんがw;
 …勝手にマウスの右クリック用のボタンが押された状態と判断しました。

0
引用返信 編集キー/
■5339 / inTopicNo.3)  Re[1]: マウスの左クリックを押した状態かそうでないかを判断したい
□投稿者/ 津田子 二等兵(1回)-(2006/08/07(Mon) 17:40:46)

分類:[C#] 

らんさん、こんにちは。

> マウスの左クリックを押した状態かそうでないかを判断したいのですが、

マウスの左ボタンがクリックされたかどうかを判断する...でいいのでしょうか?
もしそうでしたらControl.MouseDown イベントを発生させてみてください。
MouseEventArgs.Buttonプロパティで拾うことができますよ。

0
引用返信 編集キー/
■5342 / inTopicNo.4)  Re[2]: マウスの左クリックを押した状態かそうでないかを判断したい
□投稿者/ まどか 少佐(194回)-(2006/08/07(Mon) 18:14:45)

分類:[C#] 

・誰が(コントロール、アプリケーション)
・どのタイミングで何を(アプリケーション内ユーザー入力、システム上の入力)
で微妙に回答が変わるような。。。

0
引用返信 編集キー/
■5343 / inTopicNo.5)  Re[1]: マウスの左クリックを押した状態かそうでないかを判断したい
□投稿者/ らん 二等兵(5回)-(2006/08/07(Mon) 18:34:21)

分類:[C#] 

津田子さま、まどかさま、もさま、回答をありがとうございます。

すみません、説明が足りなかったので、
もう少し説明させて頂きますね。

Control.MouseDownで、右クリックされたか左クリックされたかは
とれるのですが、右クリックされたその時、左クリックボタンは押された
状態かどうかを取りたいのです。

できますでしょうか?
お忙しいところお手数をおかけします。
また、教えて頂ければ幸いです。
よろしくお願い致します。


0
引用返信 編集キー/
■5344 / inTopicNo.6)  Re[2]: マウスの左クリックを押した状態かそうでないかを判断したい
□投稿者/ ぽぴ王子 一等兵(36回)-(2006/08/07(Mon) 18:48:06)
ぽぴ王子 さんの Web サイト

分類:[C#] 

こんにちは。

Control.MouseDown イベントで取れるのであれば、もう少し調べてみるとわかっ
たかもしれませんね。
ということで、渡ってくる MouseEventArgs あたりを MSDN で調べてみてください。

0
引用返信 編集キー/
■5349 / inTopicNo.7)  Re[3]: マウスの左クリックを押した状態かそうでないかを判断したい
□投稿者/ らん 二等兵(7回)-(2006/08/08(Tue) 09:44:22)

分類:[C#] 

ぽぴ王子さま、回答をありがとうございます。

探してみたのですが、解りませんでした。
できればもう少しヒントを頂けますでしょうか?

よろしくお願い致します。

0
引用返信 編集キー/
■5351 / inTopicNo.8)  Re[4]: マウスの左クリックを押した状態かそうでないかを判断したい
□投稿者/ ぽぴ王子 一等兵(37回)-(2006/08/08(Tue) 09:55:02)
ぽぴ王子 さんの Web サイト

分類:[C#] 

こんにちは。

もう少しヒントを与えるためには、どのあたりが分からないか
書いていただけると助かります。

よろしくお願いいたします。

0
引用返信 編集キー/
■5352 / inTopicNo.9)  Re[5]: マウスの左クリックを押した状態かそうでないかを判断したい
□投稿者/ らん 二等兵(9回)-(2006/08/08(Tue) 10:16:16)

分類:[C#] 

ぽぴ王子さま、ありがとうございます。

左ボタンを押した状態なのか、離した状態なのかをとる方法が
わからないです。

MSDNを見てみましたが、イベントをとり、その時にマウスのどちらのボタンが
押されたかは、Buttonでとることができるのですが、右ボタンをクリックした
その時に左ボタンが押された状態なのか離された状態なのか(逆も然り)を
とる方法を見つけることができませんでした。

よろしくお願い致します。

0
引用返信 編集キー/
■5354 / inTopicNo.10)  Re[6]: マウスの左クリックを押した状態かそうでないかを判断したい
□投稿者/ ぽぴ王子 一等兵(38回)-(2006/08/08(Tue) 11:06:42)
ぽぴ王子 さんの Web サイト

分類:[C#] 

こんにちは。

Button プロパティは [FlagsAttribute] 付きなので、必ずどれか一つになると
は限らないわけです。
例えば、以下のようなコードを MouseDown イベント中に記述すると、
MouseDown イベントが発生したときに、どのボタンが押されたのかを知ることが
できます。

if ((e.Button & MouseButtons.Right) == MouseButtons.Right)
{
Console.WriteLine("右押された");
}
if ((e.Button & MouseButtons.Left) == MouseButtons.Left)
{
Console.WriteLine("左押された");
}

あとは未確認ですが、Control.MouseButtons プロパティで同様にその時点での
ボタンの状態を知ることが出来るようです。


0
引用返信 編集キー/
■5361 / inTopicNo.11)  Re[7]: マウスの左クリックを押した状態かそうでないかを判断したい
□投稿者/ らん 二等兵(10回)-(2006/08/08(Tue) 13:36:21)

分類:[C#] 

ぽぴ王子さん、Sourceをありがとうございます。
説明が下手ですみません。

> if ((e.Button & MouseButtons.Right) == MouseButtons.Right)
> {
> Console.WriteLine("右押された");  <<------@
     Aこの時左ボタンも押されていた場合の処理を実行
> }
> if ((e.Button & MouseButtons.Left) == MouseButtons.Left)
> {
> Console.WriteLine("左押された");
> }

上記で、たとえば右クリックしたら、@で「右押された」が出力されますが、
その後に、左ボタンを押している状態ならAの処理にはいりたいわけなのです。
ボタンは同時に押せるわけですから、右ボタンクリック時の、左ボタンの状態
をとりたいのです。

できますでしょうか?

度々すみませんが、よろしくお願い致します。



0
引用返信 編集キー/
■5363 / inTopicNo.12)  Re[8]: マウスの左クリックを押した状態かそうでないかを判断したい
□投稿者/ ぽぴ王子 伍長(40回)-(2006/08/08(Tue) 14:31:34)
ぽぴ王子 さんの Web サイト

分類:[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 に入っているはずです。
前回は分かりやすく別々に書きましたが、右ボタンが押されたときの処理の中で
左ボタンが押されたかどうかチェックすれば、右ボタンが押されていてなおかつ
左ボタンも押されているかどうかがわかるのではないでしょうか。

ちなみに前回のソースで左右のボタンを同時に押せば
右押された
左押された
の両方が出力されるかと思いますが、それは左右のボタンの状態を個別に知るこ
とが出来るからです。

もう少しかもしれませんね。がんばってください。


0
引用返信 編集キー/
■5367 / inTopicNo.13)  Re[9]: マウスの左クリックを押した状態かそうでないかを判断したい
□投稿者/ らん 二等兵(11回)-(2006/08/08(Tue) 17:56:49)

分類:[C#] 

ぽぴ王子さま、ありがとうございます!!
一応、良さげなのができました。

if ((e.Button & MouseButtons.Right) == MouseButtons.Right)
{
 if ((Control.MouseButtons & MouseButtons.Left) == MouseButtons.Left)<<--
 {
  Console.WriteLine("やり!!!!!");
 }
}

で出来ました。
「<<--」の部分は、
if ((Control.MouseButtons) == MouseButtons.Left)
でもいいですよね?

本当に懇切丁寧に教えて頂き、ありがとうございましたm(__)m


0
引用返信 編集キー/
■5368 / inTopicNo.14)  Re[10]: マウスの左クリックを押した状態かそうでないかを判断したい
□投稿者/ らん 二等兵(12回)-(2006/08/08(Tue) 18:09:57)

分類:[C#] 

ぽぴ王子さま、
もうひとつ、丸数字、これから気をつけます。
ご教示、ありがとうございました。m(__)m

0
引用返信 編集キー/
■5369 / inTopicNo.15)  Re[11]: マウスの左クリックを押した状態かそうでないかを判断したい
□投稿者/ 中博俊 神(635回)-(2006/08/08(Tue) 18:45:53)
中博俊 さんの Web サイト

分類:[C#] 

>@(あまり丸数字は使わないほうがいいかもしれませんね)
メールでもないのにこんな指摘は不要ですよ。



0
引用返信 編集キー/
■5371 / inTopicNo.16)  Re[11]: マウスの左クリックを押した状態かそうでないかを判断したい
□投稿者/ ぽぴ王子 伍長(41回)-(2006/08/08(Tue) 18:49:03)
ぽぴ王子 さんの Web サイト

分類:[C#] 

こんにちは。

> 「<<--」の部分は、
> if ((Control.MouseButtons) == MouseButtons.Left)
> でもいいですよね?

実際に実行してみるとわかるかと思いますが(やられましたか?)残念ながらそ
れではうまく動きません。
右ボタンが押されている状態で「<<--」の処理に入ってきているわけで、その時
点で Control.MouseButtons == MouseButtons.Left にはならないわけです。
(イコールにはならない)

マウスボタンが両方押されていた場合は e.Button は MouseButtons.Right と
MouseButtons.Left の両方の値が存在します。両方の値が存在するということは、
どちらか片方とイコールにはなり得ないと考えてください。
なので、(e.Button & MouseButtons.Right) とすることで
MouseButtons.Right の値だけを取り出して、それが押されている(『ビットが
立っている』と言います)ことを確認してから、今度は MouseButtons.Left で
同じことを実行しています。

前回も書いたように「2進数」「ビット演算」「論理演算」で検索してみると何
かわかるかもしれません。少し進んだ入門書でも解説しているかもしれません。
その辺は今後の課題として勉強してみてください。

丸数字は「機種依存文字」と呼ばれてトラブルのもとになることもありますので
「そういうこともあるのだ」程度でかまわないので気をつけて使ってください。
参考資料
http://d.hatena.ne.jp/keyword/%B5%A1%BC%EF%B0%CD%C2%B8%CA%B8%BB%FA

0
引用返信 編集キー/
■5381 / inTopicNo.17)  Re[12]: マウスの左クリックを押した状態かそうでないかを判断したい
□投稿者/ らん 二等兵(13回)-(2006/08/09(Wed) 09:30:51)

分類:[C#] 

ぽぴ王子さま、ありがとうございます。
昨日、投稿の前にぽぴ王子様の仰ることはこういうことかな?と思い、
以下を試してみました。

if ((e.Button & MouseButtons.Right) == MouseButtons.Right)
{
 if ((e.Button & MouseButtons.Left) == MouseButtons.Left)<<--
 {
  Console.WriteLine("右&左クリック");
  return;
 }
}

ですが、うまくいかなかったので、教えて頂いたControl.MouseButtons プロパティが[FlagsAttribute] 付きなのかと思い、「<<--」の部分を
if ((Control.MouseButtons & MouseButtons.Left) == MouseButtons.Left)
にしたらうまくいった次第でした。
なぜなのかは、すみません、勉強不足でわかっていませんです。

「MouseEventArgs」や「2進数」「ビット演算」「論理演算」も、もっと勉強して
みようと思います。

色々本当にご親切にありがとうございました。m(__)m



中博俊さま、こんにちは。
私にとりましては、優しいアドバイスの仕方でしたし、
ご指摘をありがたく思っております。
でも、私の投稿に関わってくださってありがとうございました。m(__)m



0
引用返信 編集キー/
■5384 / inTopicNo.18)  Re[13]: マウスの左クリックを押した状態かそうでないかを判断したい
□投稿者/ まどか 少佐(197回)-(2006/08/09(Wed) 13:18:14)

分類:[C#] 

> if ((e.Button & MouseButtons.Right) == MouseButtons.Right)
> ですが、うまくいかなかったので、
> if ((Control.MouseButtons & MouseButtons.Left) == MouseButtons.Left)
> にしたらうまくいった次第でした。
> なぜなのかは、すみません、勉強不足でわかっていませんです。

e.Buttonは説明によると「MouseButtons値の一つ」と書いてありますね。
つまり論理和ではないのでできなくて正解ということになりますね。

#Control.MouseButtonsはSharedだったのか。。。
#でもControlって変な感じだなぁ。
#PointingDevice.MouseButtonsとかならいい感じだったのに。

0
引用返信 編集キー/
■5390 / inTopicNo.19)  Re[14]: マウスの左クリックを押した状態かそうでないかを判断したい
□投稿者/ らん 二等兵(14回)-(2006/08/09(Wed) 16:41:26)

分類:[C#] 

まどかさま、ありがとうございます。

> e.Buttonは説明によると「MouseButtons値の一つ」と書いてありますね。
> つまり論理和ではないのでできなくて正解ということになりますね。
そうなのですね、今回初めて知りました。

> #Control.MouseButtonsはSharedだったのか。。。
右クリックした時、左ボタンが押されている状態の時、
Control.MouseButtons & MouseButtons.Left) == MouseButtons.Left

Control.MouseButtons & MouseButtons.Right) == MouseButtons.Right
もとれましたので、そうなのですね。

皆様、おかげさまで解決しました。
ありがとうございました。m(__)m


解決済み
引用返信 編集キー/
■5391 / inTopicNo.20)  Re[15]: マウスの左クリックを押した状態かそうでないかを判断したい
 
□投稿者/ ぽぴ王子 伍長(42回)-(2006/08/09(Wed) 17:10:31)
ぽぴ王子 さんの Web サイト

分類:[C#] 

> >@(あまり丸数字は使わないほうがいいかもしれませんね)
> メールでもないのにこんな指摘は不要ですよ。

まぁメールだともう少し厳密になってくるとは思いますが(半角カタカナを使う
なとか)知っておいて損はないことでしょう。
とは言え、文脈から考えるとちょっとおせっかいだったかもしれません。

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -