dポイントプレゼントキャンペーン実施中!

C#でタイマー発火時に,
Button(タクトスイッチのイメージ)が押されていることを判定したいのですが,
そのようなプロパティはあるのでしょうか.MSDNをざっと見ましたが見つけられませんでした.

(仕方ないので現在は以下のようにしています)
ButtonDownイベントで,フラグON
ButtonUpイベントで,フラグOFF

(問題)Buttonをクリック -> クリックしたままマウスを移動しボタン上を離れる
このとき,ボタン押下は元に戻るのに,
ButtonUpイベントは,マウスクリックをやめるまで発行されない.

ボタンが元に戻れば,それをすぐに検出したいのですが
難しいでしょうか.

(カテゴリ選択でC#や.NETがなかったため,その他にしました.カテゴリ違いであればご指摘ください)

A 回答 (1件)

タイマーの中でボタンが押されてるの判定したいのでしょか?


であれば以下でどうでしょうか?

private void timer1_Tick(object sender, EventArgs e)
{
var button = this.button1;
var isDown = (bool)typeof(Button).GetProperty("MouseIsDown", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic).GetValue(button, null);
System.Diagnostics.Debug.WriteLine(isDown);
}

この回答への補足

ありがとうございます.
教えていただいたやり方でいけそうな気がします.
出先のため,週明けに確認してご報告申し上げます.

補足日時:2014/10/12 17:20
    • good
    • 1
この回答へのお礼

意図した動作ができるようになりました.
MouseIsDownというのは,通常のプロパティではなく,
メタデータ内の属性と理解しました.(Reflectionは初めて知りました)
本当にありがとうございました.

お礼日時:2014/10/13 13:14

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!