C#:如何在事件处理程序中设置消息框,冻结应用程序直到按下Ok

本文关键字:应用程序 冻结 Ok 消息 事件处理 设置 程序 | 更新日期: 2023-09-27 17:58:36

嗨,我在主中有这个

  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"
}

C#:如何在事件处理程序中设置消息框,冻结应用程序直到按下Ok

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

解决方案1:您需要将此调用封送至您的主UI线程。您可以在主窗体上使用Invoke方法来完成此操作。在窗体类上定义一个方法以显示消息框。在主窗体上使用Invoke方法调用此方法。

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

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