WPF에서 클릭 이벤트를 올린 마우스 버튼을 어떻게 결정할 수 있습니까?
-
13-09-2019 - |
문제
트리거하는 버튼이 있습니다 OnClick
해당 버튼을 클릭 할 때마다. 해당 버튼을 클릭 한 마우스 버튼을 알고 싶습니다.
내가 사용할 때 Mouse.LeftButton
또는 Mouse.RightButton
, 둘 다 말해줘 "현실"클릭 후 그들의 주입니다.
내 버튼을 클릭 한 것을 알고 싶습니다. 내가 변하면 EventArgs
에게 MouseEventArgs
, 나는 오류를받습니다.
XAML : <Button Name="myButton" Click="OnClick">
private void OnClick(object sender, EventArgs e)
{
//do certain thing.
}
해결책
버튼의 클릭 이벤트 만 사용하는 경우 해고되는 유일한 마우스 버튼은 기본 마우스 버튼입니다.
왼쪽 또는 오른쪽 버튼인지 여부를 구체적으로 알아야하는 경우 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.
}
}
편집하다: 시스템 정보와 동등한 WPF는 SystemParameters이며 대신 사용할 수 있습니다. 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";
}