Eri*_* J. 4 windows-forms-designer winforms
当我尝试在设计模式下显示异常时,包含UserControl的WinForms表单会抛出异常,但在运行或调试程序时会正常运行.
设计师说:
变量'fpInfoA'要么未声明,要么从未分配过.
ResearchTool fMain.Designer.cs行:282列:1
在System.ComponentModel.Design.Serialization.CodeDomSerializerBase.DeserializeExpression(IDesignerSerializationManager)的System.ComponentModel.Design.Serialization.CodeDomSerializerBase.Error(IDesignerSerializationManager管理器,String exceptionText,String helpLink)上调用堆栈System.ComponentModel.Design.Serialization.CodeDomSerializerBase.DeserializeStatement(IDesignerSerializationManager manager,CodeStatement statement)中的System.ComponentModel.Design.Serialization.CodeDomSerializerBase.DeserializeExpression(IDesignerSerializationManager管理器,字符串名称,CodeExpression表达式)上的manager,String name,CodeExpression expression)
但是,看起来变量是按照我的预期分配的 InitializeComponent
private void InitializeComponent()
{
// ... (Order of statements is same as in actual code) ...
this.tpFpA = new System.Windows.Forms.TabPage();
this.fpInfoA = new ResearchTool.FPInfo();
// ...
this.tpFpA.Controls.Add(this.fpInfoA); // THIS LINE BLOWS UP IN DESIGN MODE
}
Run Code Online (Sandbox Code Playgroud)
关于如何追查这个问题的想法?例如,有没有办法调试设计器的初始化?
如果您无法解决问题,一种解决方法是使用检查来包围有问题的代码DesignMode.
如:
private void InitializeComponent()
{
...
if(!DesignMode)
{
this.fpInfoA = new ResearchTool.FPInfo();
}
...
}
Run Code Online (Sandbox Code Playgroud)
如果它在设计模式下不需要并且速度很慢(例如连接到数据库或类似的东西),这也可以加快它的速度.