演练:使用 Visual C# 从 Windows 窗体控件继承

摘自 微软官方文档

使用 Visual C# 2005 可以通过继承创建功能强大的自定义控件。

通过继承,可以创建不仅保留了标准 Windows 窗体控件的所有内在功能,而且还包含自定义功能的控件。

在本演练中,您将创建一个名为 ValueButton 的简单继承控件。此按钮将继承标准 Windows 窗体 Button 控件的功能,

并将公开一个名为 ButtonValue 的自定义属性。

Note

创建项目


创建新项目时,应指定其名称以便设置根命名空间、程序集名称和项目名称,并确保默认组件位于正确的命名空间中。

创建 ValueButtonLib 控件库和 ValueButton 控件
  1. 在“文件”菜单上,指向“新建”,然后单击“项目”打开“新建项目”对话框。

  2. 在 Visual C# 项目列表中,选择“Windows 控件库”项目模板,然后在“名称”框中键入 ValueButtonLib

    默认情况下,项目名称 ValueButtonLib 也被分配到根命名空间中。根命名空间用于限定程序集中的组件名。例如,如果两个程序集提供名为 ValueButton 的组件,则可以使用 ValueButtonLib.ValueButton 指定 ValueButton 组件。有关更多信息,请参见命名空间(C# 编程指南)

  3. 在“解决方案资源管理器”中右击“UserControl1.cs”,再从快捷菜单中选择“重命名”。将文件名更改为ValueButton.cs

  4. 系统询问是否要重命名对“UserControl1”代码元素的所有引用时,单击“是”按钮。

  5. 在“解决方案资源管理器”中右击“ValueButton.cs”,再选择“查看代码”。

  6. 找到 class 语句行 public partial class ValueButton,并将此控件继承的类型从 UserControl 更改为 Button

  7. 这允许您所继承的控件继承 Button 控件的所有功能。

  8. 在“解决方案资源管理器”中打开“ValueButton.cs”节点,以显示设计器生成的代码文件“ValueButton.Designer.cs”。在“代码编辑器”中打开此文件。

  9. 找到 InitializeComponent 方法并删除分配 AutoScaleMode 属性的行。在 Button 控件中并不存在此属性。

  10. 从“文件”菜单中,选择“全部保存”来保存项目。

    Note注意

    可视化设计器不再可用。由于 Button 控件自行绘制,

  11. 因此您无法在设计器中修改其外观。除非在代码中进行修改,

  12. 否则它的可视化表示形式将与它所继承的类(即 Button)的可视化表示形式完全一样。

  13. 但您仍然可以向设计器图面添加不含 UI 元素的组件。

将属性添加到继承的控件中


继承的 Windows 窗体控件的可能用途之一是创建与标准 Windows 窗体控件的外观相同、但公开自定义属性的控件。在本节中,您将向控件中添加名为 ButtonValue 的属性。

添加 Value 属性
  1. 在“解决方案资源管理器”中,右击“ValueButton.cs”,然后从快捷菜单中单击“查看代码”。

  2. 找到 class 语句。紧接在 { 后面键入下列代码:

    [C#]

    // 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 关键字设置该私有变量的值。

  3. 从“文件”菜单中,选择“全部保存”来保存项目。

测试控件


控件不是独立的项目,它们必须寄宿在某个容器中。若要测试控件,必须提供一个运行该控件的测试项目。还必须通过生成(编译)该控件使其可由测试项目访问。在本节中,将生成控件并在 Windows 窗体中测试它。

生成控件
  • 在“生成”菜单上单击“生成解决方案”。

    生成应该成功,没有任何编译器错误或警告。

创建测试项目
  1. 在“文件”菜单上,指向“添加”,然后单击“新项目”打开“添加新项目”对话框。

  2. 在“Visual C#”节点下选择“Windows”节点,再单击“Windows 应用程序”。

  3. 在“名称”框中键入 Test

  4. 在“解决方案资源管理器”中,右击测试项目的“引用”节点,然后从快捷菜单上选择“添加引用”以显示“添加引用”对话框。

  5. 单击标记为“项目”的选项卡。ValueButtonLib 项目将在“项目名称”下列出。双击项目以添加对测试项目的引用。

  6. 在“解决方案资源管理器”中右击“测试”,再选择“生成”。

将控件添加到窗体
  1. 在“解决方案资源管理器”中,右击“Form1.cs”,然后从快捷菜单中选择“视图设计器”。

  2. 在“工具箱”中单击“ValueButtonLib 组件”。双击“ValueButton”。

    窗体上显示一个“ValueButton”。

  3. 右击“ValueButton”并从快捷菜单中选择“属性”。

  4. 在“属性”窗口中检查此控件的属性。注意,这些属性与标准按钮公开的属性相同,不同的是有一个附加属性ButtonValue

  5. ButtonValue 属性设置为 5

  6. 在“工具箱”的“所有 Windows 窗体”选项卡中,双击“标签”,将 Label 控件添加到窗体中。

  7. 将标签重新定位到窗体的中央。

  8. 双击 valueButton1

    将响应 valueButton1_Click 事件而打开“代码编辑器”。

  9. 插入下面的代码行。

    [C#]

    label1.Text = valueButton1.ButtonValue.ToString();
  10. 在“解决方案资源管理器”中,右击“测试”,然后从快捷菜单中选择“设为启动项目”。

  11. 从“调试”菜单中选择“启动调试”。

    将显示 Form1

  12. 单击 valueButton1

    label1 中显示数字“5”,说明继承控件的 ButtonValue 属性已经通过 valueButton1_Click 方法传递到 label1。这样,ValueButton 控件便继承了标准 Windows 窗体按钮的所有功能,但是公开了一个附加的自定义属性。

请参见

转载于:https://www.cnblogs.com/yougyoum/archive/2012/08/31/2665203.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值