C# 未实现该方法或操作
有两种形式Form2源自Form1 但是我在设计模式下遇到了一个问题,如下面的屏幕截图所示 如果我要对这个C# 未实现该方法或操作,c#,.net,winforms,inheritance,windows-forms-designer,C#,.net,Winforms,Inheritance,Windows Forms Designer,有两种形式Form2源自Form1 但是我在设计模式下遇到了一个问题,如下面的屏幕截图所示 如果我要对这个这个进行评论它可以正常工作。发生了什么事?如何解决这个问题 UPD: 如果我将删除throw new NotImplementedException();并将插入,例如MessageBox.Show(“Test”);,每次我打开Form2时,MessageBox都会出现,就好像我在运行应用程序一样 表格2 namespace InheritanceDemo { public par
这个进行评论代码>它可以正常工作。发生了什么事?如何解决这个问题
UPD:
如果我将删除throw new NotImplementedException();并将插入,例如MessageBox.Show(“Test”);,每次我打开Form2时,MessageBox都会出现,就好像我在运行应用程序一样
表格2
namespace InheritanceDemo
{
public partial class Form2 : Form1
{
public Form2()
{
InitializeComponent();
}
}
}
表格1
namespace InheritanceDemo
{
public partial class Form1 : Form
{
protected IPresenter _presenter;
public Form1()
{
InitializeComponent();
_presenter = new Presenters();
}
private void Form1_Load(object sender, EventArgs e)
{
this._presenter.Retrive();
}
}
public class Presenters : IPresenter
{
public void Retrive()
{
throw new NotImplementedException();
}
}
public interface IPresenter
{
void Retrive();
}
}
发生了什么事?如何解决这个问题
这相当微不足道。如果你想调试你的代码,你会看到你在方法调用中抛出了一个NotImplementedException
,这就是为什么注释它是有效的:
public void Retrive()
{
throw new NotImplementedException();
}
与其抛出,不如实现实际的方法逻辑。错误的主要原因是和所说的:
但是还有一件重要的事情你应该注意
OP:如果我将删除throw new NotImplementedException();威尔
例如,插入MessageBox.Show(“测试”);,每次我都会打开
Form2消息框将显示为我运行应用程序
如果您注意到,您将不会在Form1
的设计器中收到此错误。但是,由于您的Form2
继承自Form1
,因此您会收到此错误
这是因为,当您在designer中打开表单时,设计器会生成表单的基类的一个实例来显示表单。这意味着不创建Form2
的实例,而是创建Form1
的实例,运行Form1
构造函数并将其托管在设计图面中,然后反序列化Form2
的InitializeComponent
中的代码,并将组件放在设计图面上
这就是为什么在designer中看到Form2
时会收到错误,但在designer中打开Form1
时没有收到任何错误
要解决这个问题:
- 您可以删除该实现,并让该实现为空
- 此外,您还可以通过在
Form\u Load
fd中防止运行代码来防止错误,您在Form1\u Load
中使用属性处于设计模式:
if(设计模式)
返回
您可能会发现这些答案既有用又有趣:
注释掉部分抛出新的未实现异常()对我来说很好
现在,最后一种方法将类似于以下内容:
public void Retrive()
{
//throw new NotImplementedException();
}
而不是抛出新的NotImplementedException()代码>执行其他操作…:)@FᴀʀʜᴀɴAɴᴀᴍ 如果我将删除抛出新的NotImplementedException()代码>并将插入,例如,MessageBox.Show(“测试”)
,每次我打开Form2时,消息框
就会出现,就好像我在运行应用程序一样。不仅仅是MessageBox之类的东西。@FᴀʀʜᴀɴAɴᴀᴍ 我明白了。但为什么会有这样的行为呢?你会发现和张贴有用和有趣的帖子@FᴀʀʜᴀɴAɴᴀᴍ 很抱歉名称拼写错误:)但是如果我的DoSometning()
方法现在无法正常工作,该怎么办?您希望得到什么结果?我想完成应用程序框架,然后进行设计,然后编写实现。您可以删除实现,让实现为空。此外,您还可以通过防止在设计模式下以Form\u Load
id运行代码来防止错误。
public void Retrive()
{
//throw new NotImplementedException();
}