这是 All controls on a form are invisible 的后续行动,现在我对它了解得更多了。
我有一个使用 Visual Studio 2010 的 Windows 窗体设计器创建的某个窗体。它工作正常,直到本周的某个时候。现在,当我对表单进行任何更改并且设计器重新创建 .designer.cs
文件,所有绑定(bind)成员都设置为“无”,并且所有 Controls.Add
调用被删除。控件在设计器中仍然可见,但是当我运行项目时,控件都是不可见的(由于没有 Controls.Add 调用)。如果我关闭并重新打开设计器,则表单为空白。
没有错误、警告或消息表明设计师为什么是个 SCSS ,我真的不想重新创建该表单上的每个控件,但看起来我可能别无选择。
最佳答案
设计器容易受到在设计时运行的代码引发的异常的影响。其中包括控件的构造函数和 OnPaint()、OnResize() 等方法。如果您的代码在设计时无法正常工作,例如取决于默认工作目录中的文件、可连接的 dbase 服务器等,那么该代码可能会因异常而爆炸。
您将首先注意到设计器放置的崩溃屏幕,它显示的堆栈跟踪通常不能用于诊断原因,因为它具有设计器或代码序列化程序内部的许多方法。第二个影响是,当代码序列化程序在尝试检索属性值以为其生成代码时崩溃时,您可能会丢失 InitializeComponent() 方法中的内容。当您看到 Controls.Add() 调用丢失时,这无疑发生在您的案例中。
在发生此类事故后保存 Designer.cs 文件会给您带来麻烦。修复损坏可能很棘手,从您的 VCS 恢复表单源代码文件通常是您最好的选择。
关于.net - Windows 窗体设计器因某个窗体而永久损坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5523497/