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

更新:2007 年 11 月

如果要扩展现有控件的功能,可以通过继承创建一个由现有控件导出的控件。当从一个现有控件继承时,就继承了该控件的所有功能和可视属性。例如,如果您正在创建一个从 Button 继承的控件,则新控件的外观和操作方式与标准的 Button 控件完全一样。您然后还可通过实现自定义方法和属性,扩展或修改新控件的功能。在某些控件中,还可以通过重写继承控件的 OnPaint 方法更改其可视外观。

说明:

显示的对话框和菜单命令可能会与“帮助”中的描述不同,具体取决于您的当前设置或版本。若要更改设置,请在“工具”菜单上选择“导入和导出设置”。有关更多信息,请参见 Visual Studio 设置

创建继承控件

  1. 创建新的 Windows 项目。

    此项目可为任何类型,如 Windows Application 项目或 Windows Control Library 项目。如果选择“Windows 控件库”,则可以使用所提供的空白控件并跳过步骤 2 和步骤 3。

  2. 从“项目”菜单选择“添加用户控件”。

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

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

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

  4. 在“代码编辑器”中,定位到指定 Control 作为要继承的基类的代码行。将基类的名称更改为要继承的控件的名称。

    例如,如果要从 Button 继承,则代码行应为:

    Inherits System.Windows.Forms.Button
    
    public class CustomControl1 : System.Windows.Forms.Button
    
    public class CustomControl1
       extends System.Windows.Forms.Button
    
  5. 实现将合并到控件中的任合自定义方法或属性。

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

    说明:

    重写 OnPaint 将禁止修改所有控件的外观。那些由 Windows 完成其所有绘图的控件(例如 TextBox)从不调用它们的 OnPaint 方法,因此将永远不会使用自定义代码。请参见您要修改的特定控件的帮助文档,查看 OnPaint 方法是否可用。有关所有 Windows 窗体控件的列表,请参见 在 Windows 窗体上使用的控件。如果某个控件未将 OnPaint 作为成员方法列出,则您无法通过重写此方法改变其外观。有关自定义绘制的更多信息,请参见 自定义控件的绘制和呈现

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

请参见

任务

如何:从 Control 类继承

如何:从 UserControl 类继承

如何:创作 Windows 窗体的控件

有关 Visual Basic 中继承的事件处理程序的疑难解答

概念

各种自定义控件