在MouseDown上显示MessageBox会占用MouseUp事件

Kar*_*ran 7 c# wpf mouseevent

我正在处理一个WPF应用程序,我处理了一个最终显示MessageBox的鼠标按下事件.但是在mouseDown上出现MessageBox后,它会占用控件的相应MouseUp事件.

只需在WPF窗口中处理MouseDown和MouseUP事件即可轻松复制场景:

private void Window_MouseDown(object sender, MouseButtonEventArgs e)
{
   MessageBox.show("Hello, Mouse down");
}

private void Window_MouseUP(object sender, MouseButtonEventArgs e)
{
   MessageBox.show("Hello, Mouse Up");
}
Run Code Online (Sandbox Code Playgroud)

一旦消息框出现在MouseDown事件上,MouseUp消息就不会显示.

小智 0

正如您原始帖子的评论者所说,似乎这里发生的情况是用户的鼠标偏离焦点以单击消息框,甚至只是为了显示它,因此鼠标无论如何都会“向上”移动 - 事件是从来没有打电话过。如果您只想显示消息框,则只需使用:

private void Window_MouseDown(object sender, MouseButtonEventArgs e)
{
   MessageBox.show("Hello, Mouse down");
   MessageBox.show("Hello, your mouse must be up because you've shifted focus!");
}
Run Code Online (Sandbox Code Playgroud)

应该做这项工作。如果这种行为在更改窗口标题或任何不需要用户输入的操作中重复出现,那么这可能是一个问题,但我 100% 确定这只是 MessageBox 的问题。希望这有帮助。