1

嗨,我主要有这个

  NetworkChange.NetworkAddressChanged += new NetworkAddressChangedEventHandler(AddressChangedCallback);
//The main also contains a form

而下面这个方法呢。

static void AddressChangedCallback(object sender, EventArgs e){
// would like to have a message box here that freezes the entire application
including  the form as mentioned above , untill OK is pressed"
}
4

2 回答 2

4

我假设这是一个 WinForms 应用程序。NetworkAddressChanged在后台线程上调用事件。这就是为什么当您从那里显示消息框时,您的应用程序会保持活动状态。

解决方案 1:您需要将此调用编组到您的主 UI 线程。您可以通过在主窗体上使用Invoke方法来执行此操作。在表单类上定义一个方法来显示消息框。在主窗体上使用 Invoke 方法调用此方法。

解决方案 2: C#/.NET 消息框不是模态的

于 2011-06-07T00:40:18.147 回答
0

它被称为模态和非模态。Show 是无模式的,ShowDialog 是有模式的。你可以在这里阅读更多。

于 2011-06-07T00:43:45.713 回答