【发布时间】:2014-02-12 02:21:05
【问题描述】:
我的 Winforms 应用程序需要启动一个或多个非模态报表查看器窗口,然后主窗口开始其业务(包括打开模态对话框)。我在earlier article 中找到了以下代码(由 H. Passant 编写):
private void button1_Click(object sender, EventArgs e) {
var t = new System.Threading.Thread(() => Application.Run(new Form2()));
t.SetApartmentState(System.Threading.ApartmentState.STA);
t.Start();
}
在我的例子中,“Form2”包含一个停靠的 ReportViewer 控件,设置为显示所需的报告 [new frmRptView(sReport, aRptParams)]。
在我的测试过程中一切似乎都运行良好,但是当我向测试人员提供构建时,他们报告说查看器窗口有时会锁定,摆脱它们的唯一方法是注销或重新启动。我们在使用 form.Show() 时也遇到了同样的问题。
编辑:启动非模态窗口以使其独立于主应用程序窗口的正确方法是什么?
【问题讨论】:
-
可能没有足够的信息来诊断问题。你能提供更多细节吗?
-
为什么不能正常打开新窗口?
-
我一开始尝试使用 form.Show(),但这些窗口也变得没有响应。我会改写这个问题。
标签: multithreading winforms reportviewer non-modal