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

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

概述:

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


公开控件数组

您已经创建了一种方法在数组中创建和跟踪控件,现在需要向其他开发人员公开这些控件。可以使用一个属性来执行此操作。您将创建一个默认属性 (Visual Basic) 或索引程序 (C#),根据索引返回一个对特定按钮的引用。这也使您能够通过编程方式使用控件数组的典型 MyButtonArray(myIndex) 语法。
 

创建默认属性

  • 在组件中添加以下代码。
     
    ' Visual Basic
    Default Public ReadOnly Property Item(ByVal Index As Integer) As _
    System.Windows.Forms.Button
    Get
    Return CType(Me.List.Item(Index), System.Windows.Forms.Button)
    End Get
    End Property

    // C#
    public System.Windows.Forms.Button this [int Index]
    {
    get
    {
    return (System.Windows.Forms.Button) this.List[Index];
    }
    }
     

     

实现 Remove 方法

您已经创建了公开数组中的按钮所需的属性,现在可以实现从数组中删除按钮的机制。要从数组中删除按钮,必须从集合的内部 List 对象和窗体的 Controls 集合中将其删除。

实现 Remove 方法

  • 在组件中添加以下方法。
     
    ' Visual Basic
    Public Sub Remove()
    ' 检查以确保存在要删除的按钮。
    If Me.Count > 0 Then
    ' 从宿主窗体控件集合中删除添加到数组
    ' 的最后一个按钮。请注意在访问数组时
    ' 默认属性的使用。
    HostForm.Controls.Remove(Me(Me.Count -1))
    Me.List.RemoveAt(Me.Count -1)
    End If
    End Sub

    // C#
    public void Remove()
    }
    // 检查以确保存在要删除的按钮。
    if (this.Count > 0)
    {
    // 从宿主窗体控件集合中删除添加到数组
    // 的最后一个按钮。请注意在访问数组时
    // 索引的使用。
    HostForm.Controls.Remove(this[this.Count -1]);
    this.List.RemoveAt(this.Count -1);
    }
    }

创建公共事件处理程序

最后一步是创建事件处理程序以处理数组的公共事件。本例中,我们将创建一种方法来处理按钮的单击事件,然后添加代码以将事件与事件处理程序相关联。

创建公共事件处理程序

  • 在组件中添加以下方法。
     
    ' Visual Basic
    Public Sub ClickHandler(ByVal sender As Object, ByVal e As _
    System.EventArgs)
    MessageBox.Show("您已单击按钮 " & CType(CType(sender, _
    Button).Tag, String))
    End Sub

    // C#
    public void ClickHandler(Object sender, System.EventArgs e)
    {
    System.Windows.Forms.MessageBox.Show("您已单击按钮 " +
    (string)((System.Windows.Forms.Button) sender).Tag);
    }

    此方法显示一个消息框,通过检索存储在按钮的 Tag 属性中的索引来指示单击了什么按钮。注意,此方法的签名与它将要处理的事件的签名相同,这是事件处理程序所要求的。

您还需要将事件与事件处理程序相关联。

将事件与事件处理程序相关联

  • 在 AddNewButton 方法中添加以下代码。
     
    ' Visual Basic
    AddHandler aButton.Click, AddressOf ClickHandler

    // C#
    aButton.Click += new System.EventHandler(ClickHandler);
     

测试项目

完成项目之后,您需要创建一个应用程序来测试组件的功能。

创建测试应用程序

  1. Solution Explorer(解决方案资源管理器)中,右击 Form1 并从快捷菜单中选择 View Designer(视图设计器)。
    将打开包含 Form1 的设计器。
     
  2. 从工具箱中,将两个按钮添加到窗体中。
     
  3. 将这些按钮重新定位到窗体的右侧。
     
  4. 按以下所示设置按钮的属性。
     

    按钮

    名称

    文本

    Button1 btnAdd 添加按钮
    Button2 btnRemove 删除按钮

     

  5. Solution Explorer(解决方案资源管理器)中,右击 Form1 并从快捷菜单中选择 View Code(查看代码)。
     
  6. 将打开包含 Form1 Code Editor(代码编辑器)。

     
  7. Form1 的类声明中,声明控件数组对象。
     
    ' Visual Basic
    ' 声明新的 ButtonArray 对象。
    Dim MyControlArray as ButtonArray

    // C#
    // 声明新的 ButtonArray 对象。
    ButtonArray MyControlArray;
    在窗体的构造函数中,在方法末尾前面添加以下代码:
    ' Visual Basic
    MyControlArray = New ButtonArray(Me)

    // C#
    MyControlArray = new ButtonArray(this);

    此语句将创建一个新的 ButtonArray 对象。参数(Me 或 this)将引用创建新 ButtonArray 的窗体,并将成为放置按钮数组的窗体。
     

  8. Solution Explorer(解决方案资源管理器)中,右击 Form1 并从快捷菜单中选择 View Designer(视图设计器)。
     
  9. 在设计器中,双击 btnAdd 以打开包含 btnAdd_Click 事件的 Code Editor(代码编辑器)。
     
  10. btnAdd_Click 方法中,添加代码以调用 MyControlArray AddNewButton 方法:
     
    ' Visual Basic
    ' 调用 MyControlArray 的 AddNewButton 方法。
    MyControlArray.AddNewButton()
    ' 更改按钮 0 的 BackColor 属性。
    MyControlArray(0).BackColor = System.Drawing.Color.Red

    // C#
    // 调用 MyControlArray 的 AddNewButton 方法。
    MyControlArray.AddNewButton();
    // 更改按钮 0 的 BackColor 属性。
    MyControlArray[0].BackColor = System.Drawing.Color.Red;

     

  11. Solution Explorer(解决方案资源管理器)中,右击 Form1 并从快捷菜单中选择 View Designer(视图设计器)。
     
  12. 在设计器中,双击 btnRemove 以打开包含 btnRemove_Click 事件的 Code Editor(代码编辑器)。
     
  13. btnRemove_Click 方法中,添加以下代码:
     
    ' Visual Basic
    ' 调用 MyControlArray 的 Remove 方法。
    MyControlArray.Remove()

    // C#
    // 调用 MyControlArray 的 Remove 方法。
    MyControlArray.Remove();

     

  14. 保存项目。
     

测试项目

  1. Debug(调试)菜单中,选择 Start(开始)。
    将打开 Form1,其中包含三个按钮,分别标为 Add Button(添加按钮)、Remove Button(删除按钮)和 Button 1(按钮 1)。
     
  2. 单击 Button 1(按钮 1)。
    注意,屏幕将显示一个消息框,其中正确显示了索引。
     
  3. 单击几次 Add Button(添加按钮)按钮。
    每单击一次都会向窗体添加一个新按钮。单击每个新按钮都将显示一个消息框,正确报告该按钮的索引。另外请注意,Button 0(按钮 0)的颜色已变为红色,这是由于 btnAdd_Click 事件中的以下行所导致的:
     
    MyControlArray(0).BackColor = System.Drawing.Color.Red

     

  4. 单击几次 Remove Button(删除按钮)按钮。
    每单击一次都会从窗体中删除一个按钮。

     
  5. 单击此按钮,直至删除窗体左侧的所有按钮。
     
  6. 再次单击 Add Button(添加按钮)按钮。
    按钮将再次被添加到窗体中,并用正确的索引进行编号。

总结
本文演示了如何创建封装控件数组功能的组件。其中包括如何创建方法以动态地在窗体中添加和删除控件,以及通过默认的属性或索引程序来公开对象。因为实现了所有功能,所以可以通过编写组件的自定义代码来扩展控件数组。
 


标签:

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


为你推荐

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


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP