使用单个事件处理程序处理多个控件的事件,检索并使用这些事件中的索引,如下例所示: ' visual basic 伪代码 private sub mycontrol_click(sender as object, e as eventargs) messagebox.show("您已单击 mycontrol 编号" & _ mycontrol.index) end sub
在运行时动态添加或删除控件,如下所示: ' visual basic 伪代码 dim i as integer for i = 1 to 5 ' 插入代码以创建控件并为属性分配值。 next i
在类声明中,指定此类是从 .net 框架的 system.collections.collectionbase 类继承而来的。 ' visual basic public class buttonarray inherits system.collections.collectionbase end class
system.collections.collectionbase 类提供集合所需的许多功能。其中包括 list 对象(跟踪集合所包含的对象)、count 属性(维护当前集合中的对象总数)和 removeat 方法(按特定索引删除对象)。在实现控件数组集合时,要用到这些功能。
在组件中添加以下代码。 ' 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
实现 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
在组件中添加以下方法。 ' visual basic public sub clickhandler(byval sender as object, byval e as _ system.eventargs) messagebox.show("您已单击按钮 " & ctype(ctype(sender, _ button).tag, string)) end sub
此方法显示一个消息框,通过检索存储在按钮的 tag 属性中的索引来指示单击了什么按钮。注意,此方法的签名与它将要处理的事件的签名相同,这是事件处理程序所要求的。