造成错误的主要原因是Fᴀʀʜᴀɴ和Yuval说:
throw new NotImplementedException();
但是你应该注意另一个重要的事情.
OP:如果我将删除throw new NotImplementedException(); 并将插入,例如,MessageBox.Show("Test");,每次我打开Form2时,MessageBox将显示为好像我运行应用程序
如果您注意到,您将不会在设计器中收到此错误Form1
.但是因为你Form2
从Form1
你那里继承了这个错误.
这是因为,当您在设计器中打开表单时,设计器会创建表单基类的实例来显示您的表单.这意味着代替创建一个实例Form2
它创建的一个实例Form1
,运行Form1
构造和承载它在设计表面上,然后在反序列化代码InitializeComponent
的Form2
,并把在设计表面上的部件.
这就是您在看到Form2
设计人员时收到错误的原因,但是在打开Form1
设计器时没有收到任何错误.
解决问题:
您可以删除实现,并让实现为空.
此外,您可以通过Form_Load
使用DesignMode
属性阻止在fd处于设计模式下运行代码来防止错误Form1_Load
:
if(DesignMode)返回;
您可能会发现这些答案有用且有趣:
在C#中编写表单时无法查看设计器
在设计视图中以WinForms应用程序以编程方式添加显示控件