不在调试模式下呈现控件

本文关键字:控件 模式 调试 | 更新日期: 2023-09-27 17:54:55

我有一个winform应用程序,在这个应用程序中,我在一个新线程上调用一个设置窗口作为ShowDialog。

当我在调试模式下运行应用程序时,设置表单的Show()事件不会触发。我尝试了替代Load()事件,它工作了。在这个方法中,我填充一个列表(DataGridView)并显示它。当表单呈现时,没有显示任何内容。这只是一个空白的表格。

但是,对于相同的代码,当我在没有调试的情况下运行它(ctrl + F5)时,Show()方法被触发并显示列表。

代码是一个巨大框架的一部分,因此,我认为我无法提供足够的可理解的度量。

我使用的是Win7 64位m/c.

此外,即使我检查了spy++,它也没有在表单中显示内容-因此它没有与任何控件一起呈现。没有代码是为DEBUG隔离的。

为什么会发生这种情况,哪些设置可能需要更改?

不在调试模式下呈现控件

我认为解决办法很简单。在WinForms编程中有一种叫做UI线程的东西。这意味着所有与ui相关的代码都应该在这个线程上执行。如果你在一个非UI线程上执行UI相关的代码,你要么得到一个"跨线程操作无效"异常,要么得到一个意外的行为。

我认为这里的解决方案是在UI线程上创建你的设置窗口,而不是一个新的线程。

对于初学者来说,在一个新线程上调用ShowDialog()表明您确实想要调用Show()。也就是说,当调试和发布版本的执行方式不同时,通常意味着某些东西不同步。不知道它是如何或为什么会发生,但修复通常就像点击"重建解决方案"一样简单。

在类似的情况下,我有,设置形式的StartPositionWindowsDefaultLocation到例如CenterScreen帮助。