在应用程序中打开WinForm表单的正确方法是什么?

时间:2015-01-04 17:24:54

标签: c# .net winforms user-interface

假设我已经运行了一些类,并且我希望它能够打开一个新的WinForm表单。

我试图将表单实例化并调用' Show'在上面。它在开放后立即关闭。

然后我尝试了ShowDialog',它在打开窗口时工作,但冻结了打开它的函数中的代码流。

然后我试着打电话给ShowDialog'在一个新的任务'。它起作用了,但是在项目的后期我遇到了我认为可能与此解决方案有关的问题。

我所做的是:' Task.Factory.StartNew(()=> gui.ShowDialog());'

所以我的问题是:从非WinForms代码打开WinForm的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

Application.Run(Form)在当前线程上启动消息循环并显示指定的表单。消息循环使表单能够接收Windows消息(例如,按键,鼠标点击,绘制失效),以使其显示响应并与用户进行交互。当你在Form实例上调用ShowDialog()时,它实际上做了类似的事情,并为调用ShowDialog的表单创建了一个模态消息循环。