在 Visual Basic .NET 和 Visual C# .NET 中创建控件数组(一)

翻译|其它|编辑:郝浩|2005-03-23 14:23:00.000|阅读 1054 次

概述:

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>


摘要:本文介绍如何使用 Visual Basic® .NET 和 Visual C#™ .NET 创建和管理控件数组。

目录

  • 简介
     
  • 前提
     
  • 创建项目
     
  • 实现集合
     
  • 公开控件数组
     
  • 创建公共事件处理程序
     
  • 测试项目
     
  • 总结
     

简介

数组为使用共享公共功能的控件组提供了一种方便的方式。例如,控件组可以用来显示相关数据,或者在单击时提供相关的操作。Visual Basic .NET 和 C# 本身并不支持创建控件数组,但您可以通过编程来复制控件数组的全部功能。本文将指导您创建一个复制控件数组功能的简单组件。

控件数组的某些用处如下所示:

  • 通过索引访问具有相同名称的控件集合,您可以按编号检索和设置属性,并遍历数组中的所有控件。这一操作的典型语法如下:
     
    ' Visual Basic 伪代码
    MyControl(myIndex).MyProperty = myValue
    MyControl(myIndex + 1).MyMethod

    // C# 伪代码
    myControl[myIndex].myProperty = myValue;
    myControl[myIndex + 1].myMethod
     

     

  • 使用单个事件处理程序处理多个控件的事件,检索并使用这些事件中的索引,如下例所示:
     
    ' Visual Basic 伪代码
    Private Sub MyControl_Click(sender as Object, e as EventArgs)
    Messagebox.Show("您已单击 MyControl 编号" & _
    MyControl.Index)
    End Sub

    // C# 伪代码
    private void myControl_Click(System.Object sender, System.EventArgs e)
    {
    Messagebox.Show("您已单击 MyControl 编号" +
    MyControl.Index);
    }

     

  • 在运行时动态添加或删除控件,如下所示:
     
    ' Visual Basic 伪代码
    Dim i as Integer
    For i = 1 to 5
    ' 插入代码以创建控件并为属性分配值。
    Next i

    // C# 伪代码
    for (int i = 1; i < 6; i++)
    {
    // 插入代码以创建控件并为属性分配值。
    }
     

Visual Basic .NET 和 C# 允许您复制部分此类功能,例如,使用代理将多个控件中的事件绑定到单个事件处理程序。但是,如果将该功能并入单个动态的、易于管理的组件,可能会更方便。本文中,我们将创建使用以下内容的组件:

  • 索引和排序控件的集合。按钮集合将用于演示。
     
  • 处理来自派生按钮的单击事件的事件处理程序。
     
  • 允许通过索引引用控件及其成员的代码。
     
  • 在窗体中动态添加和删除控件的代码。
     

前提

  • 熟悉组件及其工作原理。
     
  • 对多态有所了解。有关详细信息,请参阅 Polymorphism in Components(英文)。
     
  • 了解 Visual Basic .NET 或 C# .NET 语法。
     

创建项目

本节中,我们将创建和命名项目,并在项目中添加一个类。该类将封装实现控件数组的代码。

创建 ButtonArrayProject 和 ButtonArray 组件

  • File(文件)菜单上,指向 New(新建),然后选择 Project(项目)以打开 New Project(新建项目)对话框。
     
  • Visual Basic Visual C# 项目列表中选择 Windows Application(Windows 应用程序)项目模板,并在 Name(名称)框中键入 ButtonArrayProject
     
  • File(文件)菜单中,选择 Save All(全部保存)以保存项目。
     

实现集合

ButtonArray 类将通过实现集合来完成支持和组织控件数组的任务。集合是一个对象,它包含经过索引的对象变量的列表,以及在集合中添加、删除或者操作对象的方法。本节中,我们将创建继承自 System.Collections.CollectionBase(.NET 框架中的类,提供集合所需的很多功能)的类,并实现提供所需功能的方法。

创建继承的类

  1. Project(项目)菜单中,选择 Add Class(添加类)
     
  2. 相应地将类命名为 ButtonArray.vbButtonArray.cs
     
  3. 将打开包含该类的 Code Editor(代码编辑器)。
     
  4. 在类声明中,指定此类是从 .NET 框架的 System.Collections.CollectionBase 类继承而来的。
     
    ' Visual Basic
    Public Class ButtonArray
    Inherits System.Collections.CollectionBase
    End Class

    // C#
    public class ButtonArray : System.Collections.CollectionBase
    {
    // 省略了由设计器添加的代码。
    }

System.Collections.CollectionBase 类提供集合所需的许多功能。其中包括 List 对象(跟踪集合所包含的对象)、Count 属性(维护当前集合中的对象总数)和 RemoveAt 方法(按特定索引删除对象)。在实现控件数组集合时,要用到这些功能。

由于所有控件数组组件都要与一个窗体相关联,因此需要添加一个字段以保留对该窗体的引用。通过创建专用的只读字段来保留该引用,可以确保每个控件数组组件只与一个窗体相关联。

在组件中添加专用的只读字段

  • 直接在类声明中添加以下行:
     
    ' Visual Basic
    Private ReadOnly HostForm as System.Windows.Forms.Form

    // C#
    private readonly System.Windows.Forms.Form HostForm;

必须在集合中实现的第一个方法是 AddNewButton。此方法将创建新的按钮控件,并将其添加到所需的窗体中。还需要使用此方法设置新按钮的初始属性。
 

实现 AddNewButton 方法

  • 在包含 ButtonArray 类的 Code Editor(代码编辑器)中,键入以下代码:
     
    Public Sub AddNewButton()
    ' 创建 Button 类的新实例。
    Dim aButton As New System.Windows.Forms.Button()
    ' 将按钮添加到集合的内部列表。
    Me.List.Add(aButton)
    ' 将按钮添加到由 HostForm 字段
    ' 引用的窗体的控件集合中。
    HostForm.Controls.Add(aButton)
    ' 设置按钮对象的初始属性。
    aButton.Top = Count * 25
    aButton.Left = 100
    aButton.Tag = Me.Count
    aButton.Text = "按钮 " & Me.Count.ToString
    End Sub

    // C#
    public void AddNewButton()
    {
    // 创建 Button 类的新实例。
    System.Windows.Forms.Button aButton = new
    System.Windows.Forms.Button();
    // 将按钮添加到集合的内部列表。
    this.List.Add(aButton);
    // 将按钮添加到由 HostForm 字段
    // 引用的窗体的控件集合中。
    HostForm.Controls.Add(aButton);
    // 设置按钮对象的初始属性。
    aButton.Top = Count * 25;
    aButton.Left = 100;
    aButton.Tag = this.Count;
    aButton.Text = "按钮 " + this.Count.ToString();
    }

此方法将:

  1. 创建新按钮。
     
  2. 将新按钮添加到内部列表和由 HostForm 引用的窗体的控件集合中。
     
  3. 设置初始属性,包括将 Tag 属性设置为按钮的索引。您可以在本节中添加代码以设置控件的其他属性。

还必须创建一个构造函数(对组件进行实例化时运行的方法),用于设置 HostForm 字段的值,并且只要创建控件数组类的新实例,便可自动在窗体中添加新按钮。您可以通过以下方式完成此任务。
 

创建构造函数

  • 创建类的构造函数。
     
    ' Visual Basic
    Public Sub New(ByVal host as System.Windows.Forms.Form)
    HostForm = host
    Me.AddNewButton()
    End Sub

    // C#
    // 使用此构造函数替换默认的构造函数。
    public ButtonArray(System.Windows.Forms.Form host)
    {
    HostForm = host;
    this.AddNewButton();
    }

构造函数需要一个参数,即放置按钮数组的窗体。它指定提供给 HostForm 字段的值,然后调用类的 AddNewButton 方法在窗体中添加新按钮。

 


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com


为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP