控件方案:在控件数组中添加和删除控件

如何在运行时添加和删除控件,控件数组示例对此作了演示,这里,控件是选项按钮。根据这个示例,用户可以添加选项按钮,改变图片框背景颜色。

如图 7.4 所示,启动窗体,然后在上面绘制一个图片框、一个标签、两个选项按钮和三个命令按钮。

图 7.3   在运行时添加控件

下表列出了应用程序中对象的属性设置值。

对象 属性 设置值
Form Caption Control Array Example
PictureBox Name picDisplay
Label Caption Select an option button to display a new color
Option1 Name
Index
optButton
0
Option2 Name
Index
optButton
1
第一个 CommandButton Name
Caption
cmdAdd
&Add
第二个 CommandButton Name
Caption
cmdDelete
&Delete
第三个 CommandButton Name
Caption
cmdClose
&Close

控件数组应用程序的事件

接着,必须添加选项按钮和命令按钮的事件过程。添加窗体声名后启动应用程序:

Dim MaxId As Integer

所有选项按钮共享 Click 事件过程:

Private Sub optButton_Click (Index As Integer)
   picDisplay.BackColor = QBColor(Index + 1)
End Sub

通过“添加”命令按钮的 Click 事件过程添加新的选项按钮。本例中,在执行 Load 语句前,代码将检查确认加载的选项按钮数不超过十个。加载控件之后,必须将其 Visible 属性设置为 True。

Private Sub cmdAdd_Click ()
   If MaxId = 0 Then MaxId = 1   '设置全部选项按钮。
   If MaxId > 8 Then Exit Sub   '只允许十个按钮。
   MaxId = MaxId + 1         '按钮计数递增。
   Load optButton(MaxId)      '创建新按钮。
   optButton(0).SetFocus      '重置按钮选项。
   '将新按钮放置在上一个按钮下方。
   optButton(MaxId).Top = optButton(MaxId - 1)._
   Top + 400
   optButton(MaxId).Visible = True   '显示新按钮。
   optButton(MaxId).Caption = "Option" & MaxId + 1
End Sub

通过“删除”命令按钮的 Click 事件过程删除选项按钮:

Private Sub cmdDelete_Click ()
   If MaxId <= 1 Then Exit Sub   '保留最初的两个按钮。
   Unload optButton(MaxId)      '删除最后的按钮。
   MaxId = MaxId - 1            '按钮计数递减。
   optButton(0).SetFocus      '重置按钮选项。
End Sub

通过“关闭”按钮的 Click 事件过程结束应用程序:

Private Sub cmdClose_Click ()
   Unload Me
End Sub