添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

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

创建继承的控件

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

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

    此时会显示“添加新项”对话框。

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

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

  • 如果你正在使用:

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

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

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

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

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

  • 如果想要修改控件的图形外观,请重写 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).
    
  • 保存并测试控件。

  • 各种自定义控件
  • 如何:从 Control 类继承
  • 如何:从 UserControl 类继承
  • 如何:创作 Windows 窗体的控件
  • Visual Basic 中继承的事件处理程序疑难解答
  • 演练:从 Windows 窗体控件中继承
  •