C#:如何让事件处理程序中的消息框冻结应用程序,直到按下Ok?
嗨,我主要有这个C#:如何让事件处理程序中的消息框冻结应用程序,直到按下Ok?,c#,.net,showdialog,C#,.net,Showdialog,嗨,我主要有这个 NetworkChange.NetworkAddressChanged += new NetworkAddressChangedEventHandler(AddressChangedCallback); //The main also contains a form 下面是这个方法 static void AddressChangedCallback(object sender, EventArgs e){ // would like to have a message
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"
}
我假设这是一个WinForms应用程序
NetworkAddressChanged
事件在后台线程上调用。这就是为什么当你从那里显示一个消息框时,你的应用程序会保持活动状态
解决方案1:
您需要将此调用封送到主UI线程。您可以在主窗体上使用方法来实现这一点。在表单类上定义一个方法以显示消息框。在主窗体上使用Invoke方法调用此方法
解决方案2:
我假设这是一个WinForms应用程序
NetworkAddressChanged
事件在后台线程上调用。这就是为什么当你从那里显示一个消息框时,你的应用程序会保持活动状态
解决方案1:
您需要将此调用封送到主UI线程。您可以在主窗体上使用方法来实现这一点。在表单类上定义一个方法以显示消息框。在主窗体上使用Invoke方法调用此方法
解决方案2:
它被称为模态和无模态。Show是非模态的,ShowDialog是模态的。您可以阅读更多信息。它被称为模态和无模态。Show是非模态的,ShowDialog是模态的。你可以阅读更多。你用什么?WPF,WinForms?您是否尝试了MessageBox.Show?您使用了什么?WPF,WinForms?您是否尝试过
MessageBox.Show
?MessageBox类生成的消息框始终是相对于其父级的模态。这与以模态模式显示表单不同。@Zespri:ShowDialog允许在显示表单时指定父级。MessageBox类生成一个相对于其父级始终为模态的消息框。这与在模式模式下显示窗体不同。@Zespri:ShowDialog允许在显示窗体时指定父级。嗨,Zespri。。。它是一个普通的控制台应用程序。有没有可能像你建议的那样做@HelloWorld_Always:在你的问题中,你说“main也包含一个表单”。如果这不是WordFras的话,你的意思是什么?@ HeloReld:总是:如果你满意的话,考虑接受这个答案。它是一个普通的控制台应用程序。有没有可能像你建议的那样做@HelloWorld_Always:在你的问题中,你说“main也包含一个表单”。如果这不是WordFras的话,你的意思是什么?@ HeloLogd总是:如果你满意的话,考虑接受这个答案。