使用 C# 可以通过 继承创建功能强大的自定义控件。 通过继承,你可以创建保留标准 Windows 窗体控件的所有固有功能的控件,但也包含自定义功能。 在本演练中,你将创建一个名为 的简单继承控件 ValueButton。 此按钮将从标准 Windows 窗体Button控件继承功能,并公开一个名为ButtonValue的自定义属性。
创建项目
创建新项目时,请指定其名称以设置根命名空间、程序集名称和项目名称,并确保默认组件位于正确的命名空间中。
创建 ValueButtonLib 控件库和 ValueButton 控件
在 Visual Studio 中,创建新的 Windows 窗体控件库 项目,并将其命名为 ValueButtonLib。
默认情况下,项目名称
ValueButtonLib也分配给根命名空间。 根命名空间用于限定程序集中的组件名称。 例如,如果两个程序集提供命名ValueButton的组件,则可以使用ValueButton指定组件ValueButtonLib.ValueButton。 有关详细信息,请参阅命名空间。在 解决方案资源管理器中,右键单击 UserControl1.cs,然后从快捷菜单中选择“ 重命名 ”。 将文件名更改为 ValueButton.cs。 当询问您是否要重命名对代码元素的所有引用时,请单击
UserControl1按钮。在 解决方案资源管理器中,右键单击 ValueButton.cs 并选择“ 查看代码”。
找到
class语句行,将继承此控件的类型从public partial class ValueButton更改为UserControlButton。 这样,您的继承控件就可以继承 Button 控件的所有功能。在 解决方案资源管理器中,打开 ValueButton.cs 节点以显示设计器生成的代码文件 ,ValueButton.Designer.cs。 在 代码编辑器中打开此文件。
找到
InitializeComponent方法并删除分配AutoScaleMode属性的行。 控件中 Button 不存在此属性。在 “文件 ”菜单中,选择“ 全部保存 ”以保存项目。
将属性添加到继承的控件
继承的 Windows 窗体控件的一种可能用法是创建在标准 Windows 窗体控件的外观上完全相同的控件,但公开自定义属性。 在本部分中,你将向控件添加一个名为ButtonValue的属性。
添加 Value 属性
在 解决方案资源管理器中,右键单击 ValueButton.cs,然后单击快捷菜单中的 “查看代码 ”。
class找到该语句。 在{之后,键入以下代码:// Creates the private variable that will store the value of your // property. private int varValue; // Declares the property. public int ButtonValue { // Sets the method for retrieving the value of your property. get { return varValue; } // Sets the method for setting the value of your property. set { varValue = value; } }此代码设置
ButtonValue属性的存储和检索方法。 该get语句将返回的值设置为存储在私有变量varValue中的值,该set语句使用value关键字设置私有变量的值。在 “文件 ”菜单中,选择“ 全部保存 ”以保存项目。
测试控件
控件不是独立项目;它们必须托管在容器中。 为了测试控件,您必须提供一个测试项目以便运行。 您还必须通过构建(编译)来使控件对测试项目可用。 在本部分中,你将生成控件并在 Windows 窗体中对其进行测试。
构建您的控件
在 “生成” 菜单上,单击 “生成解决方案” 。 生成应成功,且没有编译器错误或警告。
创建测试项目
在“ 文件 ”菜单上,指向“ 添加 ”,然后单击“ 新建项目 ”打开“ 添加新项目 ”对话框。
选择 Visual C# 节点下的 Windows 节点,然后单击 Windows 窗体应用程序。
在 “名称 ”框中,输入 “测试”。
在 解决方案资源管理器中,右键单击测试项目的 “引用 ”节点,然后从快捷菜单中选择 “添加引用 ”以显示 “添加引用 ”对话框。
单击标记为 “项目”的选项卡。 ValueButtonLib 项目将在 项目名称下列出。 双击项目以添加对测试项目的引用。
在 解决方案资源管理器中, 右键单击“ 测试 ”并选择“ 生成”。
将控件添加到窗体
在 解决方案资源管理器中,右键单击 Form1.cs 并从快捷菜单中选择 “视图设计器 ”。
在 工具箱中,选择 ValueButtonLib 组件。 双击 ValueButton。
ValueButton 出现在窗体上。
右键单击 ValueButton ,然后从快捷菜单中选择 “属性 ”。
在 “属性” 窗口中,检查此控件的属性。 请注意,它们与标准按钮提供的属性相同,只是有一个新的附加属性 ButtonValue。
将 ButtonValue 属性设置为 5。
在工具箱的“所有 Windows 窗体”选项卡中,双击标签控件以将控件添加到Label窗体。
将标签重新定位到窗体的中心。
双击
valueButton1。代码编辑器将打开事件
valueButton1_Click。插入以下代码行。
label1.Text = valueButton1.ButtonValue.ToString();在 解决方案资源管理器中,右键单击“ 测试”,然后从快捷菜单中选择“ 设置为启动项目 ”。
从“调试”菜单中选择“启动调试”。
Form1出现。单击
valueButton1。通过< c3 />方法,数字“5”显示在
中,表明继承控件 的属性已传递到 。 因此,你的 ValueButton控件继承了标准 Windows 窗体按钮的所有功能,但公开了一个附加的自定义属性。