如何确定哪个鼠标按钮引发了WPF中的click事件?

时间:2009-06-10 18:19:27

标签: c# wpf mouseevent

我有一个按钮,只要点击该按钮,我就会触发OnClick。我想知道哪个鼠标按钮点击了该按钮?

当我使用Mouse.LeftButtonMouse.RightButton时,两者都告诉我“ realsed ”这是他们点击后的状态。

我只是想知道哪一个点击了我的按钮。如果我将EventArgs更改为MouseEventArgs,则会收到错误消息。

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

private void OnClick(object sender, EventArgs e)
{
//do certain thing. 
}

3 个答案:

答案 0 :(得分:4)

您可以如下投射:

MouseEventArgs myArgs = (MouseEventArgs) e;

然后通过以下方式获取信息:

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

该解决方案适用于VS2013,您不必再使用MouseClick事件;)

答案 1 :(得分:2)

如果您只是使用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,可以替代使用它。虽然您可以包含System.Windows.Forms作为参考来获取SystemInformation,而不会以任何方式对应用程序产生负面影响。

答案 2 :(得分:0)

你是对的,何塞,这是与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";
    }