.net 如何防止新WPF表单窃取焦点?
我已经编写了一个简单风格的程序,将使用发送和检索消息。主窗体包含一个文本框,用于键入要发送的消息。在后台,应用程序每隔几秒钟轮询服务器以查找新消息。当收到新消息时,会打开一个新窗口来显示它。这必须使用Dispatcher类在UI线程上完成 问题是,当显示新窗口时,焦点会从文本框移开,从而中断键入。这太烦人了!在这种情况下,您可以在接收信息时继续键入自己的信息。怎么做的.net 如何防止新WPF表单窃取焦点?,.net,wpf,multithreading,focus,.net,Wpf,Multithreading,Focus,我已经编写了一个简单风格的程序,将使用发送和检索消息。主窗体包含一个文本框,用于键入要发送的消息。在后台,应用程序每隔几秒钟轮询服务器以查找新消息。当收到新消息时,会打开一个新窗口来显示它。这必须使用Dispatcher类在UI线程上完成 问题是,当显示新窗口时,焦点会从文本框移开,从而中断键入。这太烦人了!在这种情况下,您可以在接收信息时继续键入自己的信息。怎么做的 作为一种解决方法,当文本框有焦点时,我会推迟弹出新消息,但应该有更好的方法 答案很简单:因为.NET 3.5 SP1 WPF表单
作为一种解决方法,当文本框有焦点时,我会推迟弹出新消息,但应该有更好的方法 答案很简单:因为.NET 3.5 SP1 WPF表单有一个
ShowActivated
属性。将此设置为false,这样标记的任何形式都不会再窃取任何焦点 您可以将窗口的Focusable属性设置为false。在我的应用程序中,我需要在所有其他窗口的顶部显示一个通知窗口,同时最小化主窗口,但不窃取焦点
所以我就这么做:
private void Window_Loaded(object sender, RoutedEventArgs e)
{
this.Topmost = true;
this.Topmost = false;
}
有没有办法在不聚焦的情况下打开一个新窗口?在这种情况下没有。用户必须能够与formA WPF表单交互?这是什么?因为加载的事件在窗口已经激活并显示后激发,所以如果从窃取焦点开始,这不会停止。