【发布时间】:2012-07-04 00:09:12
【问题描述】:
因为这是一个相当大的项目,而且我经常需要从一个类中访问其他形式的对象,所以我首先在我的 program.cs 类中创建了一个静态变量,类型为“MainForm”,它是一个 Windows 窗体。
从我的 DataManger.cs 类中,我实例化对象“Program.MainFormObj = new MainForm()”,然后调用 Show 方法以显示我的表单。看起来窗体的 Paint 事件没有完成,但它确实在绘制一些控件时启动。大概是因为主线程(这一切都在一个主线程上运行)被下一条语句“占用”。我想,不管已知问题如何,我都会使用 Application.DoEvents() 来临时解决这个问题。正如我想象的那样,它起作用了,但只是在一定程度上。如果我使用像 MessageBox.Show() 这样的阻塞方法,我可以在后台查看我完全完美的表单,但只要我按下“OK”并且代码继续,整个应用程序就会退出。
我真的被困住了。尽管在这里和使用谷歌都进行了广泛的搜索,但我找不到合适的答案。我做了这个线程:Form.Show() is not showing it's child controls 但给定的解决方案不适合我的解决方案。非常感谢任何帮助,谢谢。
【问题讨论】:
-
您至少违反了两个“永远不要这样做!” Winforms 编程规则。你可能在做什么只能猜测。这不是目前形式的可回答问题,请访问您当地的书店或图书馆,查找有关正确 Winforms 编程技术的不错书籍。
标签: c# .net forms controls paint