WPF의 Button.MouseMove 이벤트에는 항상 Released 상태의 e.LeftMouse가 있습니다.

MatrixRonny

WPF의 Button 컨트롤에서 끌어서 놓기를 시작하려고합니다. 클릭 이벤트도 처리하고 싶기 때문에 Button을 사용하고 있습니다.

XAML에 버튼을 추가하고 항상 MouseMove 이벤트를 처리하는 것은이 e.LeftMouse같음을 MouseButtonState.Released.

<Button MouseMove="Button_MouseMove"/>

다음 핸들러 구현에서는 예외가 발생하지 않습니다.

private void Button_MouseMove(object sender, MouseEventArgs e)
{
    if (e.LeftButton == MouseButtonState.Pressed)
        throw new Exception("It works!");
}

Button 내부에 배치하고 MouseMove 이벤트를 처리하려고 시도하는 모든 컨트롤에 대해서도 동일하다는 것을 알았습니다.

Button 컨트롤 또는 WPF의 버튼 내부에있는 다른 컨트롤에서 끌어서 놓기를 어떻게 처리합니까?

편집-mm8의 답변을 기반으로 한 솔루션

업데이트 된 XAML은 다음과 같습니다.

<Button PreviewMouseDown="Button_PreviewMouseDown"
        PreviewMouseUp="Button_PreviewMouseUp"
        PreviewMouseMove="Button_PreviewMouseMove">
</Button>

업데이트 된 핸들러 코드 :

Point startPosition;
double delta = 10;
private void Button_PreviewMouseDown(object sender, MouseButtonEventArgs e)
{
    e.Handled = true;
    startPosition = e.GetPosition(this);
}

private void Button_PreviewMouseUp(object sender, MouseButtonEventArgs e)
{
    Point currentPosition = e.GetPosition(this);

    if ((currentPosition - startPosition).Length < delta)
        throw new Exception("MouseClick");
}

private void Button_PreviewMouseMove(object sender, MouseEventArgs e)
{
    Point currentPosition = e.GetPosition(this);
    double currentDelta = (currentPosition - startPosition).Length;

    if (e.LeftButton == MouseButtonState.Pressed && currentDelta >= delta)
        throw new Exception("DragAndDrop");
}
mm8

PreviewMouseDown대신 이벤트를 처리 할 수 ​​있습니다 Click.

private void Button_Click(object sender, MouseButtonEventArgs e)
{
    //handle click here...

    e.Handled = true;
}

XAML :

<Button PreviewMouseDown="Button_Click" MouseMove="Button_MouseMove"/>

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

WPF DataGridCheckBoxColumn의 상태가 ViewModel에서 업데이트되지 않습니다.

분류에서Dev

$ .data ()를 사용하여 클릭 이벤트의 상태를 변경하는 데 문제가 있습니다.

분류에서Dev

MouseMove 이벤트가 예상대로 작동하지 않습니다.

분류에서Dev

WPF의 약한 이벤트 "항상"-예상되는 동작입니까?

분류에서Dev

Redmine에서 문제 상태에서 동일한 상태로의 상태 전환이 의미가 있습니까?

분류에서Dev

상태가있는 메뉴의 React Js / Active 항목

분류에서Dev

item : deleted 이벤트에서 Sitecore 항목의 상위 항목을 가져 오는 방법은 무엇입니까?

분류에서Dev

ConstraintLayout에는 가변 너비의 TextView 외에 항상 ImageView가 있습니다.

분류에서Dev

CalendarExtender가있는 TextBox의 .Text 속성은 항상 비어 있습니다.

분류에서Dev

사용자 정의 레이어의 인스턴스는 항상 start_failed 상태가됩니다.

분류에서Dev

`ifelse`가 항상`if`의 단순한 형태가 아니라는 것이 이상합니다.

분류에서Dev

IE11의 Selenium WebDriver는 URL에 항상 "--port ="가 있습니다.

분류에서Dev

이미지를 정의 할 때 상태가 비어 있습니다.

분류에서Dev

React.js (TypeScript)의 상태 설정에 문제가 있습니다.

분류에서Dev

$ urlRouterProvider에서 부모의 상태 매개 변수가 비어 있습니다.

분류에서Dev

immutable.js가있는 React, Redux : 목록에서 하나의 항목을 삭제할 때 올바른 상태 데이터를 가져올 수 없습니다.

분류에서Dev

MTM에 "준비"상태의 테스트 에이전트가 있지만 연결할 수 없습니다.

분류에서Dev

상태에있는 어레이의 상태 업데이트

분류에서Dev

OWL 또는 RDFS에 공통 참여자가 하나 이상있는 경우 2 개의 이벤트를 표현하는 방법은 관련이 있습니다.

분류에서Dev

런타임 동안 Grid의 Textbox 텍스트가 항상 비어 있습니다.

분류에서Dev

GA의 "이벤트가있는 세션"메트릭이 이상합니다.

분류에서Dev

WPF는 목록 상자에서 항목의 가시성을 설정합니다.

분류에서Dev

lazy datatable의 rowselect 이벤트 객체는 항상 null입니다.

분류에서Dev

Chart.js 막대 차트에는 항상 1의 값이 있습니다.

분류에서Dev

WinForms의 Button에는 CLICK 이벤트가 있습니다. 그러나 누가 Button 개체에 클릭되었음을 알릴까요?

분류에서Dev

캔버스의 터치 이벤트가 ipad / iOS10에서 항상 제대로 실행되지는 않습니다.

분류에서Dev

연결이 닫히지 않았습니다. 연결의 현재 상태가 열려 있습니다. C # 오류

분류에서Dev

연결이 닫히지 않았습니다. 연결의 현재 상태가 열려 있습니다. c #

분류에서Dev

WinForms의 "Ghost"MouseMove 이벤트

Related 관련 기사

  1. 1

    WPF DataGridCheckBoxColumn의 상태가 ViewModel에서 업데이트되지 않습니다.

  2. 2

    $ .data ()를 사용하여 클릭 이벤트의 상태를 변경하는 데 문제가 있습니다.

  3. 3

    MouseMove 이벤트가 예상대로 작동하지 않습니다.

  4. 4

    WPF의 약한 이벤트 "항상"-예상되는 동작입니까?

  5. 5

    Redmine에서 문제 상태에서 동일한 상태로의 상태 전환이 의미가 있습니까?

  6. 6

    상태가있는 메뉴의 React Js / Active 항목

  7. 7

    item : deleted 이벤트에서 Sitecore 항목의 상위 항목을 가져 오는 방법은 무엇입니까?

  8. 8

    ConstraintLayout에는 가변 너비의 TextView 외에 항상 ImageView가 있습니다.

  9. 9

    CalendarExtender가있는 TextBox의 .Text 속성은 항상 비어 있습니다.

  10. 10

    사용자 정의 레이어의 인스턴스는 항상 start_failed 상태가됩니다.

  11. 11

    `ifelse`가 항상`if`의 단순한 형태가 아니라는 것이 이상합니다.

  12. 12

    IE11의 Selenium WebDriver는 URL에 항상 "--port ="가 있습니다.

  13. 13

    이미지를 정의 할 때 상태가 비어 있습니다.

  14. 14

    React.js (TypeScript)의 상태 설정에 문제가 있습니다.

  15. 15

    $ urlRouterProvider에서 부모의 상태 매개 변수가 비어 있습니다.

  16. 16

    immutable.js가있는 React, Redux : 목록에서 하나의 항목을 삭제할 때 올바른 상태 데이터를 가져올 수 없습니다.

  17. 17

    MTM에 "준비"상태의 테스트 에이전트가 있지만 연결할 수 없습니다.

  18. 18

    상태에있는 어레이의 상태 업데이트

  19. 19

    OWL 또는 RDFS에 공통 참여자가 하나 이상있는 경우 2 개의 이벤트를 표현하는 방법은 관련이 있습니다.

  20. 20

    런타임 동안 Grid의 Textbox 텍스트가 항상 비어 있습니다.

  21. 21

    GA의 "이벤트가있는 세션"메트릭이 이상합니다.

  22. 22

    WPF는 목록 상자에서 항목의 가시성을 설정합니다.

  23. 23

    lazy datatable의 rowselect 이벤트 객체는 항상 null입니다.

  24. 24

    Chart.js 막대 차트에는 항상 1의 값이 있습니다.

  25. 25

    WinForms의 Button에는 CLICK 이벤트가 있습니다. 그러나 누가 Button 개체에 클릭되었음을 알릴까요?

  26. 26

    캔버스의 터치 이벤트가 ipad / iOS10에서 항상 제대로 실행되지는 않습니다.

  27. 27

    연결이 닫히지 않았습니다. 연결의 현재 상태가 열려 있습니다. C # 오류

  28. 28

    연결이 닫히지 않았습니다. 연결의 현재 상태가 열려 있습니다. c #

  29. 29

    WinForms의 "Ghost"MouseMove 이벤트

뜨겁다태그

보관