派生方法的 C# 设计器错误
Posted
技术标签:
【中文标题】派生方法的 C# 设计器错误【英文标题】:C# Designer error for derive method 【发布时间】:2018-03-02 14:10:58 【问题描述】:当我在 Visual Studio 中为我的表单打开设计器时遇到问题
方法“dragScreen_MouseDown”不能是事件的方法,因为该类派生自的类已经定义了该方法。
我唯一改变的是添加一个名为FormBase
的新类并将该类中的方法获取到其他形式。工作正常,但设计师似乎不喜欢它。
所以在FormBase.cs
我得到了这个方法:
protected void dragScreen_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
if (e.Button == MouseButtons.Left)
ReleaseCapture();
SendMessage(Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0);
然后在Main.cs
继承表单FormBase。
在设计器中是这样的:
this.button6.MouseDown += new System.Windows.Forms.MouseEventHandler(this.dragScreen_MouseDown);
【问题讨论】:
请出示代码 我不知道要显示什么,因为方法本身不是问题。只是似乎不喜欢它的设计师。我在这里发现了类似的问题,但没有用:***.com/questions/3165269/… 所以你添加了一个像class FormBase : Form1
这样的新类?
用'new'关键字声明方法,或重命名方法。
The method 'xxx' cannot be the method for an event because a class this class derives from already defines the method的可能重复
【参考方案1】:
我认为您的问题是您从类BaseForm
派生了部分 类MainForm
,而该类是从类System.Windows.Forms.Form
派生的。这意味着设计器生成的代码我从类System.Windows.Forms.Form
派生,但你在类中的一部分是BaseForm
。您需要将设计器代码从public partial class MainForm : Form
更改为public partial class MainForm : BaseForm
。
我说的对吗?
【讨论】:
已经是这样了。该应用程序运行良好,没有错误。只是我的 MainForm 中的设计器显示了错误。 我认为你不应该使用BaseForm
,因为 Visual Studio 不喜欢这样。【参考方案2】:
我能够解决问题。由于我在 Main.Designer.cs 中有 dragScreen 导致第一个冲突,它不喜欢在类外寻找方法。所以我不得不删除这些行并添加到 Main.cs 构造函数中:
panel4.MouseDown += dragScreen_MouseDown;
【讨论】:
以上是关于派生方法的 C# 设计器错误的主要内容,如果未能解决你的问题,请参考以下文章