【发布时间】:2021-10-08 00:00:16
【问题描述】:
我有一个 winform 应用程序,我在其中调用一个设置窗口作为新线程上的 ShowDialog。
当我在调试模式下运行应用程序时,设置表单的 Show() 事件不会触发。我尝试了备用 Load() 事件,它起作用了。在这种方法中,我填充了一个列表(DataGridView)并显示它。当表单呈现时,什么都没有显示。它只是一个空白表格。
但是,对于相同的代码,当我在没有调试的情况下运行它时(ctrl + F5),会触发 Show() 方法并显示列表。
代码是一个庞大框架的一部分,因此,我认为我无法提供足够可理解的度量。
我使用的是 Win7 64 位 m/c。
此外,即使我签入了 spy++,它也没有在表单中显示任何内容 - 因此它没有使用任何控件呈现。也没有为 DEBUG 隔离代码。
为什么会发生这种情况以及哪些设置可能需要更改?
【问题讨论】:
-
你调用
Invoke方法吗?你说你在一个新线程中显示对话框,那么你应该调用Invoke方法。 -
如果您想知道在调试模式下到底发生了什么,请在任何抛出的异常上激活中断(在 VS 中,选择 Debug->Exceptions,然后在 Common Language Runtime Exceptions 前面 选中 Thrown 下的复选框)。您可以查看是否抛出任何异常。
-
是的,我确实使用 Invoke,因为我从后台线程调用它。我尝试设置Thrown,但它没有抛出任何异常,只是弹出了空白表单。我在做一个 ctrl + F5 然后在 VS 中附加这个过程。这以某种方式起作用。
-
创建一个有问题的最小项目并将其上传到某个地方(例如在 SkyDrive 上),以便我们对其进行测试并调查问题。