对动态增加控件的事件编程

lengbohan 2000-06-13 02:58:00
我在程序中动态增加控件
Private WithEvents cComView As ComView.ComViewctl
.....
for i=1 to 15
Set cComView = frmViewer.Controls.Add("ComView.ComViewctl", "cComView" & Format(i), Picture2)

....
next i
增加完以后, 当然就有cComView1...cComView15等控件存在了.
问题: 我想对这些控件的事件编程, 比如说, 点一下cComView2, 就会调用一个参数为2的函数,点一下cComView8, 就会调用一个参数为8的函数...
如何做? cComView_Click倒是有事件,但此时它指向最大编号的comView,点其它不激发.

有什么好办法?
...全文
158 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Janven 2000-06-14
  • 打赏
  • 举报
回复
Janven越来越佩服Un1了:)
刚来的时候对Un1和929的高分非常...
这段日子下来,觉得Un1很不错。
(Janven的马屁技能猛增20等级,领悟绝技“拍蝇手”)
TopHead 2000-06-14
  • 打赏
  • 举报
回复
un1,难道我说的有错吗?你是高手,可是你的描述象我这样的庸手没看懂,难道叫你提供个简单的例子都不行吗?
Un1 2000-06-13
  • 打赏
  • 举报
回复
To TopHead:

饭来张口,衣来伸手的行为不是程序员所为,你应该在别人的启示下自己动手尝试。
TopHead 2000-06-13
  • 打赏
  • 举报
回复
呵呵,说的天花乱坠,给个例子好吗:)
Un1 2000-06-13
  • 打赏
  • 举报
回复
动态事件处理在VB中属于高级编程范畴。

1:如果是控件,你可以先建立一个索引为0的控件,这是所有控件的事件处理将增加一个参数Index,你可根据不同的Index去做不同的处理。运行时用Load方法增加控件就是了。

2:如果由于某些原因不可以前期为控件写绑定的事件处理程序,但控件书目固定。这时你可以将控件申明为:
public withevnts ctlCtrl as VBControlExtender
然后在ctlCtrl的ObjectEvent事件中根据不同事件名去响应。

3:对于不能前期绑定而又未知数目的控件怎样处理呢?
这就结合前面两个办法:
在usercontrol内声明
private withevents ctlCtrl as VBControlExtender

public event aaaaa
public event bbbbb(if parameters)

根据不同的ObjectEvent名:
private sub ctlCtrl_ObjectEvent(Info As EventInfo)
select case info.Name
case "aaaaa"
raiseevent aaaaa
case "bbbbb"
raiseevent bbbbb(if parameters)
end select
end sub

最后在form上放入此usercontrol,并把其index置0,剩下来的事情照情况1处理。

这样就搞定啦!

1,451

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧