如何:从现有 Windows 窗体控件继承

如果想要扩展现有控件的功能,可以通过继承创建一个派生自现有控件的控件。 从现有控件继承时,将继承该控件的的所有功能和可视属性。 例如,如果要创建从 Button 继承的控件,则新控件的外观和行为将与标准的 Button 控件完全一样。 然后可以通过实现自定义方法和属性来扩展或修改新控件的功能。 在某些控件中,还可以通过重写继承控件的 OnPaint 方法来更改其可视外观。

创建继承的控件

  1. 在 Visual Studio 中创建新的“Windows 窗体应用程序”项目

  2. 从“项目”菜单中选择“添加新项”

    “添加新项” 对话框随即出现。

  3. 在“添加新项”对话框中,双击“自定义控件”

    一个新的自定义控件将被添加到项目中。

  4. 如果你正在使用:

    • Visual Basic,请在“解决方案资源管理器”的顶部单击“显示所有文件”。 展开 CustomControl1.vb,然后在“代码编辑器”中打开 CustomControl1.Designer.vb。
    • C#,请在“代码编辑器”中打开 CustomControl1.cs。
  5. 找到从 Control 继承的类声明。

  6. 将基类更改为要从中继承的控件。

    例如,如果想从 Button 继承,请将类声明更改为以下内容:

    Partial Class CustomControl1
        Inherits System.Windows.Forms.Button
    
    public partial class CustomControl1 : System.Windows.Forms.Button
    
  7. 如果使用的是 Visual Basic,则保存并关闭 CustomControl1.Designer.vb。 在“代码编辑器”中打开 CustomControl1.vb。

  8. 实现控件将纳入的任何自定义方法或属性。

  9. 如果想要修改控件的图形外观,请重写 OnPaint 方法。

    注意

    重写 OnPaint 将不允许你修改所有控件的外观。 那些由 Windows 完成其所有绘制的控件(例如 TextBox)从不调用其 OnPaint 方法,因此永远不会使用自定义代码。 请参阅想要修改的特定控件的帮助文档,以查看 OnPaint 是否可用。 有关所有 Windows 窗体控件的列表,请参阅在 Windows 窗体上使用的控件。 如果控件未将 OnPaint 作为成员方法列出,则不能通过重写此方法来更改其外观。 有关自定义绘制的详细信息,请参阅自定义控件的绘制和呈现

    Protected Overrides Sub OnPaint(ByVal e As _
       System.Windows.Forms.PaintEventArgs)
       MyBase.OnPaint(e)
       ' Insert code to do custom painting.
       ' If you want to completely change the appearance of your control,
       ' do not call MyBase.OnPaint(e).
    End Sub
    
    protected override void OnPaint(PaintEventArgs pe)
    {
       base.OnPaint(pe);
       // Insert code to do custom painting.
       // If you want to completely change the appearance of your control,
       // do not call base.OnPaint(pe).
    }
    
  10. 保存并测试控件。

另请参阅