如何:从现有 Windows 窗体控件继承
如果要扩展现有控件的功能,可以通过继承创建派生自现有控件的控件。 从现有控件继承时,将继承该控件的所有功能和视觉属性。 例如,如果要创建继承自 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). }
保存并测试控件。