C# 继承窗体中的类

标签 c# inheritance

我一直在拔头发有一段时间了

我创建了一个充满图片框的表单。每个图片框将包含一个 _click、_mousedown 和 _mouseup 事件。我希望将为表单创建的这些事件移动到 class1.cs 中,然后让 form1.cs 继承这些事件。

我不想公开 picturebox1。 所以诸如 Class1 classOne = new Class1(); pictureBox1.Click += new EventHandler(cs.pictureBox1_Click);将不起作用。

我不确定如何让 form1.cs 继承 class1.cs。在我脑海中听起来很简单,但我只是精神一片空白

我厌倦了 Form1 类(class):Form,Class1

在 Form1.Designer.cs 中 this.pictureBox1.Click += new System.EventHandler(this.pictureBox1_Click); this.pictureBox1_Click无法访问

如果你能指出我正确的方向,那将是一个很大的帮助!干杯

Form1.cs
public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }
}

Class1.cs 
class Class1
{

    private void pictureBox1_Click(object sender, EventArgs e)
    {
        MessageBox.Show("pb1 click");
    }
 }

最佳答案

Class1 应该继承自 Form,然后 Form1 会继承 Class1:

class Class1 : Form
{
    //...
}

public partial class Form1 : Class1
{
    //...
}

确保所有 partial 声明都继承自 Class1 而不是 Form。 (这可能会为任何自动生成的代码添加一个额外的步骤,这是 partial 类的典型原因。您可能需要为此编写自己的自动化程序。)

我不清楚的是您试图通过在 FormForm1 之间使用中间类型来实现什么。 Class1 是否应该是多个表单将继承的通用“基本表单”?还是您正在尝试做其他事情?但是如果您希望 Form1 能够访问 Class1 的成员而不将它们暴露为 public 成员,您可以将它们设为 protected 代替。

关于C# 继承窗体中的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10220358/

相关文章:

c++ - 从基指针列表循环 (OOD) 调用派生类方法

Django 区分查询集中的子项

c++ - 不能使用继承、纯虚方法分配抽象类型的对象

javascript - ASP.NET C# 如何将 Canvas 图像作为位图传递给 Controller

c# - 单元测试 - Controller 未从 ASP.NET Core Web API 项目中的模拟 IConfiguration 中获取值

c# - LINQ 多对多关系 : Solution?

c# - 派生类定义的基类集合

c++ - 抽象基类中私有(private)虚函数的可见性

c# - 尝试更改 asp.net 中默认 login.aspx 页面内的标签文本

c# - 通过catch block 从函数返回,finally block 会发生什么?