WPF でどのマウス ボタンをクリック イベントが発生したかを確認するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/977329

  •  13-09-2019
  •  | 
  •  

質問

トリガーするボタンがあります OnClick そのボタンをクリックするたびに。どのマウス ボタンがそのボタンをクリックしたかを知りたいのですが?

を使用するときは、 Mouse.LeftButton または Mouse.RightButton, 、両方とも私に言います」実現した" これはクリック後の状態です。

誰が私のボタンをクリックしたのか知りたいだけです。私が変わったら EventArgsMouseEventArgs, 、エラーが発生します。

XAML: <Button Name="myButton" Click="OnClick">

private void OnClick(object sender, EventArgs e)
{
//do certain thing. 
}
役に立ちましたか?

解決

Button の Click イベントを使用しているだけの場合、それを起動する唯一のマウス ボタンはプライマリ マウス ボタンです。

左ボタンか右ボタンかを具体的に知りたい場合は、SystemInformation を使用してそれを取得できます。

void OnClick(object sender, RoutedEventArgs e)
    {
        if (SystemParameters.SwapButtons) // Or use SystemInformation.MouseButtonsSwapped
        {
            // It's the right button.
        }
        else
        {
            // It's the standard left button.
        }
    }

編集: SystemInformation に相当する WPF は SystemParameters であり、代わりに使用できます。ただし、アプリケーションに悪影響を与えることなく SystemInformation を取得するための参照として System.Windows.Forms を含めることはできます。

他のヒント

以下のようにキャストできます。

MouseEventArgs myArgs = (MouseEventArgs) e;

そして、次のようにして情報を取得します。

if (myArgs.Button == System.Windows.Forms.MouseButtons.Left)
{
    // do sth
}

このソリューションは VS2013 で動作するため、MouseClick イベントを使用する必要はなくなりました ;)

そうです、ホセ、それは MouseClick イベントを使用したものです。ただし、小さなデリゲートを追加する必要があります。

this.button1.MouseDown += new System.Windows.Forms.MouseEventHandler(this.MyMouseDouwn);

そして、フォームでこのメソッドを使用します。

    private void MyMouseDouwn(object sender, MouseEventArgs e) 
    {
        if (e.Button == MouseButtons.Right)
           this.Text = "Right";

        if (e.Button == MouseButtons.Left)
            this.Text = "Left";
    }
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top