나는 심지어 윈도우의 외부 사용자가 어디서든 클릭 할 때의 이벤트 아래로 마우스에 가입하는 WPF 창 있습니다 클릭이 범위를 벗어나면이는 MouseDown 이벤트는 WPF 창에서 발사 중지
void RightClickWindow_MouseDown(object sender, MouseButtonEventArgs e)
{
try
{
base.OnMouseDown(e);
Point mousePositionInApp = Mouse.GetPosition(this);
Point mousePositionInScreenCoordinates = PointToScreen(mousePositionInApp);
if (mousePositionInScreenCoordinates.X < Left || mousePositionInScreenCoordinates.X > Left + Width || mousePositionInScreenCoordinates.Y < Top || mousePositionInScreenCoordinates.Y > Top + Height)
{
Close();
}
}
catch { }
}
void RightClickWindow_Activated(object sender, EventArgs e)
{
Mouse.Capture(this, CaptureMode.SubTree);
}
을 나는 창문을 닫는다. 이것은 하나의 특수한 경우를 제외하고는 잘 작동하지만 수정 방법을 알 수는 없습니다. 다음은 작동이 멈춘 곳입니다.
XAML에 간단한 WPF Button
이 있습니다. 이 단추를 마우스 왼쪽 단추로 누르고 마우스를 놓은 상태에서 단추 경계 밖으로 커서를 끈 다음 마우스 왼쪽 단추를 놓으면 이러한 캡처 이벤트가 더 이상 실행되지 않습니다. 왜 그런가요?이 특별한 경우를 위해 코드를 수정하려면 어떻게해야합니까?
버튼을 놓을 때 더 이상 발사하지 않거나 더 이상 발사하지 않는 것을 의미합니까? – furkle
더 이상 발사되지 않습니다. – Alexandru
문제는 윈도우가 마우스 캡처를 잃어 버리는 것입니다. 문제를 재현하기 위해 창 내부의 요소를 초점을 맞추고 창 외부를 클릭하는 등의 다른 방법이 있습니다. 마우스 캡처가 손실되어 예상대로 닫히지 않습니다. 이런 일을해서는 안된다고 생각합니다. 그 행동은 매우 신뢰할 수 없습니다. 창에 항상 마우스 캡처가 있으면 제목 표시 줄을 정상적으로 처리 할 수 없습니다 (상호 작용할 수 없음). 먼저 제목 표시 줄을 끌기 전에 창의 일부 요소를 집중시켜야합니다. 그러면 창문이 마우스 캡처를 잃어 버립니다 ... –