假设我已经运行了一些类,并且我希望它能够打开一个新的WinForm表单。
我试图将表单实例化并调用' Show'在上面。它在开放后立即关闭。
然后我尝试了ShowDialog',它在打开窗口时工作,但冻结了打开它的函数中的代码流。
然后我试着打电话给ShowDialog'在一个新的任务'。它起作用了,但是在项目的后期我遇到了我认为可能与此解决方案有关的问题。
我所做的是:' Task.Factory.StartNew(()=> gui.ShowDialog());'
所以我的问题是:从非WinForms代码打开WinForm的正确方法是什么?
答案 0 :(得分:1)
Application.Run(Form)
在当前线程上启动消息循环并显示指定的表单。消息循环使表单能够接收Windows消息(例如,按键,鼠标点击,绘制失效),以使其显示响应并与用户进行交互。当你在Form实例上调用ShowDialog()
时,它实际上做了类似的事情,并为调用ShowDialog的表单创建了一个模态消息循环。