我有一个按钮,只要点击该按钮,我就会触发OnClick
。我想知道哪个鼠标按钮点击了该按钮?
当我使用Mouse.LeftButton
或Mouse.RightButton
时,两者都告诉我“ realsed ”这是他们点击后的状态。
我只是想知道哪一个点击了我的按钮。如果我将EventArgs
更改为MouseEventArgs
,则会收到错误消息。
XAML: <Button Name="myButton" Click="OnClick">
private void OnClick(object sender, EventArgs e)
{
//do certain thing.
}
答案 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";
}