编辑 winForm VS2012 时丢失 UserControl

Posted

技术标签:

【中文标题】编辑 winForm VS2012 时丢失 UserControl【英文标题】:Losing UserControl when editing winForm VS2012 【发布时间】:2013-04-12 02:05:53 【问题描述】:

我在这个表单中有一个名为 EmployeeForm 的表单,其中包含一些 UserControl,当我编辑 EmployeeForm 时,表单内的每个 UserControl 都丢失了。

此图显示了修改组合框名称后 TFS(左)和本地(右)文件之间的差异

this.ucEmployeeKeyOne 示例:

public partial class Employee_EmployeeKeyOneRelationUC
    : Employee_EmployeeKeyOneRelation_GenericUC
 [other Code Here] 

public class Employee_EmployeeKeyOneRelation_GenericUC
    : RelationUC<MyObject>
 

以及RelationUC的定义:

public partial class RelationUC<T>
    : DataUserControlBase
 [other Code Here] 

public partial class DataUserControlBase
   : UserControlBase
 [other Code Here] 

public partial class UserControlBase
   : System.Windows.Forms.UserControl, MyInterfaceHere
 [other Code Here] 

我丢失的所有UserControl 都继承自RelationUC&lt;T&gt;。 RelationUC 的泛型类型是否会导致问题?

【问题讨论】:

IDE 中的设计器有时会发疯。您是否尝试过重新启动 Visual Studio? @PaulSasik 是的,我试过了。感谢您的尝试 检查以确保您继承的 UC 类可以被 IDE 正确实例化。例如。确保有公共构造函数,类不是抽象的等。通过直接在设计器中打开继承的控件进行测试。 我也这样做了,RelationUC&lt;T&gt; 在设计器中正确显示。 DataUserControlBase 怎么样?还有Employee_EmployeeKeyOneRelation_GenericUC ? 【参考方案1】:

为了让 Vs 设计器加载控件,控件应该能够初始化,包括所有公共属性,并且您必须有一个空的构造函数。如果您没有空的构造函数或具有从继承的可为空类返回的属性,则设计器很可能会崩溃。

要调试这个,

1) 在 VS 中打开你的项目,但不要打开包含控件的文件;

2)打开另一个VS,附上你的项目打开的VS进程;

3) 设置异常中断(快捷键 'CTRL + D, CTRL +E' ) 对所有人(一旦你熟悉了设计者抛出的异常,你就可以只设置那个异常。);

4) 与您的项目一起进入 VS 并打开包含您的用户控件的文件。当抛出异常时,第二个 VS 会捕获它并告诉你确切的原因和位置。

【讨论】:

以上是关于编辑 winForm VS2012 时丢失 UserControl的主要内容,如果未能解决你的问题,请参考以下文章

VS2012:程序无法启动,因为“libvorbisfile.dll”丢失

在vs2012中创建一个winform,并且运行起来。

vs winform项目如何改成4.0,创建时用的是4.5的,现在需要改成4.0的

由于旧的程序集引用,无法在 VS2012 中加载 Winforms 设计器

vs.net 2005中web.config智能感知丢失时

在 VS 2010 中调试后丢失文件?