编辑 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<T>
。 RelationUC 的泛型类型是否会导致问题?
【问题讨论】:
IDE 中的设计器有时会发疯。您是否尝试过重新启动 Visual Studio? @PaulSasik 是的,我试过了。感谢您的尝试 检查以确保您继承的 UC 类可以被 IDE 正确实例化。例如。确保有公共构造函数,类不是抽象的等。通过直接在设计器中打开继承的控件进行测试。 我也这样做了,RelationUC<T>
在设计器中正确显示。
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”丢失
vs winform项目如何改成4.0,创建时用的是4.5的,现在需要改成4.0的