Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.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#_Winforms - Fatal编程技术网

C# 通过标签打开新表单会导致出现错误

C# 通过标签打开新表单会导致出现错误,c#,winforms,C#,Winforms,当我点击标签时,我试图使一个新表单出现。我正在使用Windows应用程序窗体 代码如下: private void label1_Click(object sender, EventArgs e) { Form parpokeru = new Form(); parpokeru.Show(); parpokeru.ShowDialog(); } 单击标签时,出现错误(应用程序中出现未处理的异常…)。有人能告诉我怎么修吗?打电话给.Show()或.ShowDialog()。不是

当我点击标签时,我试图使一个新表单出现。我正在使用Windows应用程序窗体

代码如下:

private void label1_Click(object sender, EventArgs e)
{
   Form parpokeru = new Form();
   parpokeru.Show();
   parpokeru.ShowDialog();
}
单击标签时,出现错误(应用程序中出现未处理的异常…)。有人能告诉我怎么修吗?

打电话给
.Show()
.ShowDialog()
。不是两者都有

  • 将显示第二个表单,同时仍允许用户访问第一个表单

  • 将第二个表单显示为“模态”。当第二个窗体打开时(至少在主线程上),第一个窗体中的代码将停止执行。例如,计时器将继续运行,当第二个窗体打开时,用户将无法访问第一个窗体


当您调用
Show
方法时,您的表单会像另一个窗口一样显示在视频上,并且代码会从调用中立即返回。因此,您的代码将继续,并且应用程序的所有形式都可供用户交互使用。它被称为无模式对话框

相反,
ShowDialog
是一个阻塞调用。在被调用的表单内部发生终止表单可视化的事件之前,代码不会从此调用返回。例如,调用methid
Hide
或单击按钮,将其DialogResult属性设置为与
DialogResult.None不同的内容。此时,ShowDialog返回代码并继续正常处理。当代码在
ShowDialog
中被阻止时,应用程序被阻止,用户无法与其他表单或菜单或视频上显示的任何内容进行交互。它被称为模态对话框

另一个区别是ShowDialog返回的值(DialogResult枚举值)可用于确定用户如何关闭表单(DialogResult.Cancel、DialogResult.OK),而且ShowDialog在关闭时不调用Dispose方法。这将允许从模式对话框中检索属性,如用户输入,以便进一步处理


我无法想象在一个非模态调用Show之后,如果在同一个表单实例上立即调用ShowDialog,表单的内部处理会发生什么。但是,这段代码中的一个例外情况实际上是最低限度的。

选择一个:Show或showDialogy有人能解释一下这两者之间的区别吗?@MarisP: