控件类型建议

更新:2007 年 11 月

.NET Framework 为您提供了开发和实现新控件的能力。除了常见的用户控件外,现在您会发现,您可以编写能执行自身绘图的自定义控件,甚至还可以通过继承扩展现有控件的功能。确定创建何种类型的控件可能会费一番功夫。本节重点介绍了各类可继承控件间的区别,同时提供关系到为项目选择的类型的注意事项。

说明:

如果要创作在 Web 窗体上使用的控件,请参见 开发自定义 ASP.NET 服务器控件

从 Windows 窗体控件继承

可以从任何现有的 Windows 窗体控件导出继承控件。此方法使您得以保留 Windows 窗体控件所有固有功能,然后通过添加自定义属性、方法或其他功能扩展此固有功能。例如,可以创建一个从 TextBox 派生的控件,该控件只接受数字并能自动将输入转换为值。这样的控件可能包含验证代码,每当文本框中的文本发生更改时就会调用此代码,另外,控件还可能有一个附加的“值”属性。在某些控件中,也可以通过重写基类的 OnPaint 方法将自定义外观添加到控件的图形接口上。

处于下列情况时继承 Windows 窗体控件:

  • 大多数所需的功能已经与现有的 Windows 窗体控件相同。

  • 不需要自定义图形接口,或者想为现有控件设计一个新的图形前端。

从 UserControl 类继承

用户控件是封装在公共容器内的 Windows 窗体控件的集合。此容器包含与每个 Windows 窗体控件相关联的所有固有功能,允许您有选择地公开和绑定它们的属性。用户控件的例子之一可能是已生成的显示数据库中客户地址数据的控件。该控件可能包括几个用来显示字段的文本框,几个用来通过记录定位的按钮 (Button) 控件。可以有选择地公开数据绑定属性,可以将整个控件打包并在应用程序之间重复使用。

在下列情况下,从 UserControl 类继承:

  • 要将若干个 Windows 窗体控件的功能合成一个可重新使用的单元。

从 Control 类继承

创建控件的另一种方式是通过从 Control 继承从头创建一个控件。Control 类提供控件(例如事件)所需的所有基本功能,但不提供控件特定的功能或图形界面。与通过从用户控件或现有 Windows 窗体控件继承创建控件相比,通过从 Control 类继承创建控件需要耗费更多的心思和精力。因为作者必须为控件的 OnPaint 事件编写代码以及所需的任何功能特定代码,但同时也允许作者根据自己的需要,灵活地自定义调整控件。时钟控件即是一个自定义控件,它复制模拟时钟的外观和操作,自定义绘制将被调用来促使时钟指针走动,以响应内部计时器组件的 Tick 事件。

在下列情况下,从 Control 类继承:

  • 想要提供控件的自定义图形化表示形式。

  • 需要实现无法从标准控件获得的自定义功能。

Topic Location
如何:创建利用设计时功能的 Windows 窗体控件 .NET Framework:应用程序开发
如何:从 UserControl 类继承 Windows 窗体控件
如何:设计时将控件与窗体边缘对齐 Windows 窗体控件
如何:创作复合控件 Windows 窗体控件
如何:为控件提供工具箱位图 Windows 窗体控件
演练:使用 Visual C# 从 Windows 窗体控件继承 Windows 窗体控件
演练:设计时调试自定义 Windows 窗体控件 Windows 窗体控件
如何:从现有 Windows 窗体控件继承 Windows 窗体控件
如何:在“自定义工具箱”对话框中显示控件 Windows 窗体控件
演练:使用 Visual C# 创作复合控件 Windows 窗体控件
演练:使用 Visual Basic 创作复合控件 Windows 窗体控件
如何:创作 Windows 窗体的控件 Windows 窗体控件
如何:从 Control 类继承 Windows 窗体控件
演练:使用 Visual Basic 从 Windows 窗体控件继承 Windows 窗体控件
演练:使用 DesignerSerializationVisibilityAttribute 序列化标准类型的集合 Windows 窗体控件
如何:测试 UserControl 的运行时行为 Windows 窗体控件
如何:创建利用设计时功能的 Windows 窗体控件 .NET Framework:应用程序开发
如何:在“自定义工具箱”对话框中显示控件 Windows 窗体控件
演练:使用 DesignerSerializationVisibilityAttribute 序列化标准类型的集合 Windows 窗体控件
演练:使用 Visual C# 从 Windows 窗体控件继承 Windows 窗体控件
如何:为控件提供工具箱位图 Windows 窗体控件
如何:从现有 Windows 窗体控件继承 Windows 窗体控件
演练:设计时调试自定义 Windows 窗体控件 Windows 窗体控件
如何:从 Control 类继承 Windows 窗体控件
如何:测试 UserControl 的运行时行为 Windows 窗体控件
如何:设计时将控件与窗体边缘对齐 Windows 窗体控件
如何:从 UserControl 类继承 Windows 窗体控件
如何:创作 Windows 窗体的控件 Windows 窗体控件
如何:创作复合控件 Windows 窗体控件
演练:使用 Visual Basic 创作复合控件 Windows 窗体控件
演练:使用 Visual C# 创作复合控件 Windows 窗体控件
演练:使用 Visual Basic 从 Windows 窗体控件继承 Windows 窗体控件
如何:创建利用设计时功能的 Windows 窗体控件 .NET Framework:应用程序开发
如何:在“自定义工具箱”对话框中显示控件 Windows 窗体控件
演练:使用 DesignerSerializationVisibilityAttribute 序列化标准类型的集合 Windows 窗体控件
演练:使用 Visual C# 从 Windows 窗体控件继承 Windows 窗体控件
如何:为控件提供工具箱位图 Windows 窗体控件
如何:从现有 Windows 窗体控件继承 Windows 窗体控件
演练:设计时调试自定义 Windows 窗体控件 Windows 窗体控件
如何:从 Control 类继承 Windows 窗体控件
如何:测试 UserControl 的运行时行为 Windows 窗体控件
如何:设计时将控件与窗体边缘对齐 Windows 窗体控件
如何:从 UserControl 类继承 Windows 窗体控件
如何:创作 Windows 窗体的控件 Windows 窗体控件
如何:创作复合控件 Windows 窗体控件
演练:使用 Visual Basic 创作复合控件 Windows 窗体控件
演练:使用 Visual C# 创作复合控件 Windows 窗体控件
演练:使用 Visual Basic 从 Windows 窗体控件继承 Windows 窗体控件
如何:创建利用设计时功能的 Windows 窗体控件 dv_fxdeveloping
如何:在“选择工具箱项”对话框中显示控件 dv_mclictl
演练:使用 DesignerSerializationVisibilityAttribute 序列化标准类型的集合 dv_mclictl
演练:使用 Visual C# 从 Windows 窗体控件继承 dv_mclictl
如何:为控件提供工具箱位图 dv_mclictl
如何:从现有 Windows 窗体控件继承 dv_mclictl
演练:设计时调试自定义 Windows 窗体控件 dv_mclictl
如何:从 Control 类继承 dv_mclictl
如何:测试 UserControl 的运行时行为 dv_mclictl
如何:设计时将控件与窗体边缘对齐 dv_mclictl
如何:从 UserControl 类继承 dv_mclictl
如何:创作 Windows 窗体的控件 dv_mclictl
如何:创作复合控件 dv_mclictl
演练:使用 Visual Basic 创作复合控件 dv_mclictl
演练:使用 Visual C# 创作复合控件 dv_mclictl
演练:使用 Visual Basic 从 Windows 窗体控件继承 dv_mclictl
如何:创建利用设计时功能的 Windows 窗体控件 dv_fxdeveloping

请参见

任务

如何:开发简单的 Windows 窗体控件

概念

各种自定义控件