【问题标题】:C# Designer error for derive method派生方法的 C# 设计器错误
【发布时间】: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);

【问题讨论】:

标签: c# winforms


【解决方案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;

【讨论】:

    猜你喜欢
    • 2015-01-20
    • 2016-06-10
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 2012-04-22
    • 1970-01-01
    相关资源
    最近更新 更多