派生方法

时间:2018-03-02 14:10:58

标签: c# winforms

我在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);

2 个答案:

答案 0 :(得分:0)

我认为您的问题是您从类MainForm派生了部分BaseForm,它来自类System.Windows.Forms.Form。这意味着设计者生成的代码我是从类System.Windows.Forms.Form派生的,但是您的部分类是BaseForm。您需要将设计师代码从public partial class MainForm : Form更改为public partial class MainForm : BaseForm

我是对的吗?

答案 1 :(得分:0)

我能够解决问题。由于我在Main.Designer.cs中有dragScreen导致第一次冲突,它不喜欢在类外寻找方法。所以我不得不删除这些行并添加Main.cs构造函数:

panel4.MouseDown += dragScreen_MouseDown;