如何防止新的WPF表格被盗?

时间:2009-09-21 20:00:33

标签: .net wpf multithreading focus

我编写了一个简单的MSN式程序,它将使用WCF发送和检索邮件。主窗体包含一个文本框,用于键入要发送的消息。在后台,应用程序每隔几秒钟轮询一次服务器以获取新消息。收到新消息时,将打开一个新窗口以显示该消息。这必须使用Dispatcher类在UI线程上完成。

问题是当显示新窗口时,焦点会从TextBox移开,因此打字会中断。这很烦人!在MSN Messenger中,可以在接收消息时继续输入您自己的消息。怎么做?

作为一种解决方法,当TextBox具有焦点时,我使用新消息推迟弹出窗口,但应该有更好的方法!

3 个答案:

答案 0 :(得分:53)

答案很简单:由于.NET 3.5 SP1 WPF表单具有ShowActivated属性。将此设置为false,这样标记的任何形式都不会再没有重点!

答案 1 :(得分:-2)

您可以将窗口的Focusable属性设置为false。

答案 2 :(得分:-2)

在我的应用程序中,我需要在所有其他窗口的顶部显示一个通知窗口,同时我的MainWindow被最小化,但没有窃取焦点。

所以我这样做:

private void Window_Loaded(object sender, RoutedEventArgs e)
{
    this.Topmost = true;
    this.Topmost = false;
}