如何:从现有 Windows 窗体控件继承
更新:2010 年 7 月
如果要扩展现有控件的功能,可以通过继承创建一个由现有控件导出的控件。 当从一个现有控件继承时,就继承了该控件的所有功能和可视属性。 例如,如果您正在创建一个从 Button 继承的控件,则新控件的外观和操作方式与标准的 Button 控件完全一样。 您然后还可通过实现自定义方法和属性,扩展或修改新控件的功能。 在某些控件中,还可以通过重写继承控件的 OnPaint 方法更改其可视外观。
提示
显示的对话框和菜单命令可能会与“帮助”中的描述不同,具体取决于您现用的设置或版本。 若要更改设置,请在“工具”菜单上选择“导入和导出设置”。 有关更多信息,请参见 使用设置。
创建继承控件
创建一个新的**“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). }
保存并测试控件。
请参见
任务
有关 Visual Basic 中继承的事件处理程序的疑难解答
演练:使用 Visual Basic 从 Windows 窗体控件继承
演练:使用 Visual C# 从 Windows 窗体控件继承
概念
修订记录
日期 |
修订记录 |
原因 |
---|---|---|
2010 年 7 月 |
针对 Visual Studio 2010 进行了更新。 |
客户反馈 |