繁体   English   中英

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

[英]Showing MessageBox on MouseDown eats up MouseUp event

我正在处理一个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");
}

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

如何初始化System.Threading.Thread的新实例以调用MessageBox以便主用户界面线程不会被提示中断?

private void Window_MouseDown(object sender, MouseEventArgs e)
{
    Thread mythread = new Thread(() => MessageBox.Show("Hello, Mouse Down")); //Initialize a new Thread to show our MessageBox within 
    mythread.Start(); //Start the thread
}

private void Window_MouseUP(object sender, MouseEventArgs e)
{
    Thread mythread = new Thread(() => MessageBox.Show("Hello, Mouse Up")); //Initialize a new Thread to show our MessageBox within 
    mythread.Start(); //Start the thread
}

截图

在另一个线程中调用MessageBox以避免中断主用户界面线程

谢谢,
我希望这个对你有用 :)

正如你原来帖子上的评论者所说的那样,这里发生的事情似乎是用户的鼠标徘徊在焦点以点击消息框,甚至只是为了显示它,所以鼠标无论如何都向上移动 - 事件是从未打电话过 如果您只是想显示消息框,那么只需使用:

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!");
}

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

@picrofo解决方案也很好,很简单,但我这样做了

  DialogResult result;
 private void button1_MouseDown(object sender, MouseEventArgs e)
    {
        string message = "would you like to see mouse up event?";
        string caption = "event trick";
        MessageBoxButtons buttons = MessageBoxButtons.YesNo;

        result = MessageBox.Show(message, caption, buttons);
        textBox1.Text = result.ToString();
        if (result == System.Windows.Forms.DialogResult.Yes)
        {
            button1_MouseUp(sender, e);

        }

    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM