WPF에서 클릭 이벤트를 올린 마우스 버튼을 어떻게 결정할 수 있습니까?

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

  •  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";
    }
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top