创建 ValueButtonLib 控件库和 ValueButton 控件
在“文件”菜单上,指向“新建”,然后单击“项目”以打开“新建项目”对话框。
在“C# 项目”列表中,选择“Windows 控件库”项目模板,然后在“名称”框中键入 ValueButtonLib。
注意 Windows 控件库模板在 Visual Basic 和 Visual C# .NET 的标准版中不可用。有关更多信息,请参阅 Visual Basic 标准版功能或 Visual C# 标准版的功能。
默认情况下,项目名称 ValueButtonLib 也会分配到根命名空间中。根命名空间用于限定程序集中的组件名。例如,如果两个程序集都提供名为 ValueButton 的组件,则可以使用 ValueButtonLib.ValueButton 指定 ValueButton 组件。
在解决方案资源管理器中,右击 UserControl1.cs,并从快捷菜单中选择“查看代码”。
找到 class 语句 public class UserControl1,将 UserControl1 更改为 ValueButton 以更改组件的名称。
找到构造函数 public UserControl1(),将它更改为 public ValueButton()。
在 Class 语句,将该控件从 System.Windows.Forms.UserControl 继承的类型更改为 System.Windows.Forms.Button。这允许继承的控件继承 Button 控件的所有功能。
在解决方案资源管理器中,单击 UserControl1.cs,并在“属性”窗口中,将 FileName 属性更改为 ValueButton.cs。
从“文件”菜单中,选择“全部保存”来保存项目。
注意,设计器已不再可用。因为 Button 控件自己完成绘制,所以无法在设计器中修改它的外观。除非在代码中对其进行修改,否则它的可视化表示形式将与它从中继承的类(即 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 应用程序”。
在“名称”框中键入 Test。
在解决方案资源管理器中,右击测试项目的“引用”节点,然后从快捷菜单中选择“添加引用”以显示“添加引用”对话框。
单击标记为“项目”的选项卡。
双击 ValueButtonLib 项目,并注意该项目此时出现在“选定的组件”窗格中。
添加引用后,应将新控件添加到工具箱。如果您的控件已经出现在工具箱中,则应该跳过下一节。
将控件添加到工具箱
右击工具箱,然后从快捷菜单中选择“自定义工具箱”。
“自定义工具箱”对话框打开。
选择“.NET 框架组件”选项卡并单击“浏览”。浏览到 ValueButtonLib\bin\debug 文件夹并选择 ValueButton.dll。
ValueButton 出现在“自定义工具箱”对话框的组件列表中。
在“自定义工具箱”对话框中,单击 ValueButton 旁的框并关闭窗口。
ValueButton 被添加到选定的工具箱的选项卡上。
将控件添加到窗体
在解决方案资源管理器中,右击“Form1.cs”,然后从快捷菜单中选择“视图设计器”。
在工具箱中,向下滚动直到到达标记为 ValueButton 的图标。双击该图标。
窗体上显示一个“ValueButton”。
右击“ValueButton”并从快捷菜单中选择“属性”。
在“属性”窗口中检查该控件的属性。注意,它们与标准按钮公开的属性相同,不同的是有一个附加属性 ButtonValue。
将 ButtonValue 属性设置为 5。
在“工具箱”的“Windows 窗体”选项卡中,双击“标签”将 Label 控件添加到窗体中。
将标签重新定位到窗体中心。
双击 valueButton1。
代码编辑器打开并显示 ValueButton1_Click 事件。
键入以下代码行。
label1.Text = valueButton1.ButtonValue.ToString();
在解决方案资源管理器中,右击“测试”,然后从快捷菜单中选择“设为启动项目”。
从“调试”菜单中选择“启动”。
出现 Form1。
单击 valueButton1。
Label1 中显示数字“5”,说明继承控件的 ButtonValue 属性已经通过 ValueButton1_Click 方法传递到 Label1。这样,ValueButton 控件便继承了标准 Windows 窗体按钮的所有功能,但是公开了一个附加的自定义属性。
啊~~~~~~~~ 搞定
在“文件”菜单上,指向“新建”,然后单击“项目”以打开“新建项目”对话框。
在“C# 项目”列表中,选择“Windows 控件库”项目模板,然后在“名称”框中键入 ValueButtonLib。
注意 Windows 控件库模板在 Visual Basic 和 Visual C# .NET 的标准版中不可用。有关更多信息,请参阅 Visual Basic 标准版功能或 Visual C# 标准版的功能。
默认情况下,项目名称 ValueButtonLib 也会分配到根命名空间中。根命名空间用于限定程序集中的组件名。例如,如果两个程序集都提供名为 ValueButton 的组件,则可以使用 ValueButtonLib.ValueButton 指定 ValueButton 组件。
在解决方案资源管理器中,右击 UserControl1.cs,并从快捷菜单中选择“查看代码”。
找到 class 语句 public class UserControl1,将 UserControl1 更改为 ValueButton 以更改组件的名称。
找到构造函数 public UserControl1(),将它更改为 public ValueButton()。
在 Class 语句,将该控件从 System.Windows.Forms.UserControl 继承的类型更改为 System.Windows.Forms.Button。这允许继承的控件继承 Button 控件的所有功能。
在解决方案资源管理器中,单击 UserControl1.cs,并在“属性”窗口中,将 FileName 属性更改为 ValueButton.cs。
从“文件”菜单中,选择“全部保存”来保存项目。
注意,设计器已不再可用。因为 Button 控件自己完成绘制,所以无法在设计器中修改它的外观。除非在代码中对其进行修改,否则它的可视化表示形式将与它从中继承的类(即 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 应用程序”。
在“名称”框中键入 Test。
在解决方案资源管理器中,右击测试项目的“引用”节点,然后从快捷菜单中选择“添加引用”以显示“添加引用”对话框。
单击标记为“项目”的选项卡。
双击 ValueButtonLib 项目,并注意该项目此时出现在“选定的组件”窗格中。
添加引用后,应将新控件添加到工具箱。如果您的控件已经出现在工具箱中,则应该跳过下一节。
将控件添加到工具箱
右击工具箱,然后从快捷菜单中选择“自定义工具箱”。
“自定义工具箱”对话框打开。
选择“.NET 框架组件”选项卡并单击“浏览”。浏览到 ValueButtonLib\bin\debug 文件夹并选择 ValueButton.dll。
ValueButton 出现在“自定义工具箱”对话框的组件列表中。
在“自定义工具箱”对话框中,单击 ValueButton 旁的框并关闭窗口。
ValueButton 被添加到选定的工具箱的选项卡上。
将控件添加到窗体
在解决方案资源管理器中,右击“Form1.cs”,然后从快捷菜单中选择“视图设计器”。
在工具箱中,向下滚动直到到达标记为 ValueButton 的图标。双击该图标。
窗体上显示一个“ValueButton”。
右击“ValueButton”并从快捷菜单中选择“属性”。
在“属性”窗口中检查该控件的属性。注意,它们与标准按钮公开的属性相同,不同的是有一个附加属性 ButtonValue。
将 ButtonValue 属性设置为 5。
在“工具箱”的“Windows 窗体”选项卡中,双击“标签”将 Label 控件添加到窗体中。
将标签重新定位到窗体中心。
双击 valueButton1。
代码编辑器打开并显示 ValueButton1_Click 事件。
键入以下代码行。
label1.Text = valueButton1.ButtonValue.ToString();
在解决方案资源管理器中,右击“测试”,然后从快捷菜单中选择“设为启动项目”。
从“调试”菜单中选择“启动”。
出现 Form1。
单击 valueButton1。
Label1 中显示数字“5”,说明继承控件的 ButtonValue 属性已经通过 ValueButton1_Click 方法传递到 Label1。这样,ValueButton 控件便继承了标准 Windows 窗体按钮的所有功能,但是公开了一个附加的自定义属性。
啊~~~~~~~~ 搞定
{
}