【Winform.NET开发】从Windows窗体控件继承

发布时间:2023年12月23日

本文内容

  1. 创建项目
  2. 将属性添加到继承控件
  3. 测试控件

使用 C# 可通过继承来创建功能强大的自定义控件。 通过继承,可以创建不仅保留了标准 Windows 窗体控件的所有固有功能,而且还包含自定义功能的控件。 在本演练中,将创建一个名为?ValueButton?的简单继承控件。 此按钮将继承标准 Windows 窗体?Button?控件的功能,并将公开一个名为?ButtonValue?的自定义属性。

1、创建项目

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

创建 ValueButtonLib 控件库和 ValueButton 控件

  1. 在 Visual Studio 中,创建一个新的“Windows 窗体控件库”项目,并将其命名为 ValueButtonLib。

    默认情况下,项目名称?ValueButtonLib?也会分配到根命名空间中。 根命名空间用于限定程序集中的组件名。 例如,如果两个程序集都提供名为?ValueButton?的组件,则可以使用?ValueButtonLib.ValueButton?指定?ValueButton?组件。?

  2. 在“解决方案资源管理器”中,右键单击“UserControl1.cs”,然后从快捷菜单中选择“重命名”。 将文件名更改为 ValueButton.cs。 询问是否希望重命名对代码元素“”的所有引用时,单击“是”UserControl1按钮。

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

  4. 找到?class?语句行?public partial class ValueButton,并将此控件从?UserControl?继承的类型更改为?Button。 这允许所继承的控件继承?Button?控件的所有功能。

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

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

  7. 在“文件”菜单中,选择“全部保存”以保存项目。

    ?备注

    可视化设计器不再可用。 由于?Button?控件自行绘制,因此无法在设计器中修改其外观。 除非在代码中进行了修改,否则它的视觉对象表示形式将与其继承的类(即?Button)的视觉对象表示形式完全相同。 但仍然可以向设计器图面添加不含 UI 元素的组件。

2、将属性添加到继承控件

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

添加 Value 属性

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

  2. 找到?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?关键字设置该私有变量的值。

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

3、测试控件

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

生成控件

在?“生成”?菜单上,单击?“生成解决方案”?。 生成应会成功,且没有任何编译器错误或警告。

创建测试项目

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

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

  3. 在“名称”框中,输入“测试”。

  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://blog.csdn.net/m0_51887793/article/details/135161040
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。