Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在新创建的对话框上需要调用_C#_.net_Winforms - Fatal编程技术网

C# 在新创建的对话框上需要调用

C# 在新创建的对话框上需要调用,c#,.net,winforms,C#,.net,Winforms,我们在应用程序中使用以下方法来显示对话框。该方法是从UI线程和非UI线程调用的。调用messageDialog上的InvokeRequired以确保该对话框将显示在UI线程上是否可以 public static DialogResult ShowMessageDialog(MessageInfo messageInfo,ButtonFlags flags,IconType iconId,HorizontalAlignment btnAlignment,bool topMost) { Dialog

我们在应用程序中使用以下方法来显示对话框。该方法是从UI线程和非UI线程调用的。调用messageDialog上的InvokeRequired以确保该对话框将显示在UI线程上是否可以

public static DialogResult ShowMessageDialog(MessageInfo messageInfo,ButtonFlags flags,IconType iconId,HorizontalAlignment btnAlignment,bool topMost)
{
DialogResult retDialogResult = DialogResult.None;

MessageDialog messageDialog = new MessageDialog(messageInfo.GetLanguageBasedFieldValue(MessageInfoField.Message), iconId);
messageDialog.TopMost = topMost;

// Initialize the layout of Message Dialog.
messageDialog.Initialize();
retDialogResult = messageDialog.ShowDialog();

return retDialogResult;
}

否,
invokererequired
将永远不会返回true,因为
MessageDialog
是在您正在执行的线程上构造的。另外,
InvokeRequired
将始终返回false,直到创建控件的句柄,这在以后才会发生(请参阅)


请确保始终从UI线程调用
ShowMessageDialog
,或者使用
ShowMessageDialog
进入UI线程的方法,例如存储
ISynchronizeInvoke
。我认为前者是更好的解决方案。

不,
invokererequired
永远不会返回true,因为
MessageDialog
是在您正在执行的线程上构造的。另外,
InvokeRequired
将始终返回false,直到创建控件的句柄,这在以后才会发生(请参阅)

请确保始终从UI线程调用
ShowMessageDialog
,或者使用
ShowMessageDialog
进入UI线程的方法,例如存储
ISynchronizeInvoke
。我认为前者是更好的解决办法