失去UserControl在编辑WinForm VS2012时的控制权

4

我有一个名为EmployeeForm的表单,在该表单中,我包含了一些用户控件,当我编辑EmployeeForm时,表单内的每个用户控件都会丢失。

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

enter image description here

这是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<T>。泛型类型RelationUC会导致问题吗?


IDE中的设计师有时会出现问题。你尝试过重新启动Visual Studio吗? - Paul Sasik
请检查您继承的 UC 类是否可以被 IDE 正确实例化。例如,请确保存在公共构造函数,类不是抽象的等等。通过直接在设计器中打开继承的控件来测试这一点。 - Paul Sasik
我也这样做了,RelationUC<T> 在设计器中显示正确。 - poudigne
DataUserControlBase 怎么样?还有 Employee_EmployeeKeyOneRelation_GenericUC - Paul Sasik
让我们在聊天中继续这个讨论。点击此处进入聊天室 - Paul Sasik
显示剩余6条评论
1个回答

3
为了使Vs设计器加载控件,控件应该能够初始化,包括所有公共属性,并且您必须有一个空的构造函数。如果您没有空构造函数或者具有从继承的可空类返回的属性,则设计器很可能会崩溃。
调试方法如下:
1)在VS中打开项目,但不要打开包含控件的文件;
2)打开另一个VS并附加到打开了您的项目的VS进程;
3)将异常断点设置为所有异常(快捷键“CTRL + D”,“CTRL +E”),直到您熟悉设计器抛出的异常后,只需设置该异常即可;
4)转到包含用户控件的文件,并在引发异常时,第二个VS将捕获它并告诉您出现异常的原因和位置。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接