高分求助:如何在vb中动态添加控件,并动态生成被添加控件的事件???

coolroy2000 2004-04-23 10:19:31
例如:
Set btnObj = Controls.Add("VB.CommandButton", "btnObj")
With btnObj
' .Index = 1
.Visible = True
.Width = 2000
.Caption = "Hello"
.Top = 1000
.Left = 1000
End With
动态添加一个CommandButton控件以后,需要:
Private Sub btnObj_Click()
MsgBox "这是动态添加的按钮。"
MsgBox "remove self"
Controls.Remove btnObj
Set NewButton = Nothing
End Sub
这个类似的事件(生成控件以后再生效的)。不能用:
Private WithEvents btnObj as CommandButton
因为事先并不知道要动态生成多少个控件!


给个思路也行~~~~~~~~```
...全文
303 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
wxyq 2004-04-23
  • 打赏
  • 举报
回复
为什么不用 CommandButton.LOAD(I)
可以方便一点啊!
huwei001982 2004-04-23
  • 打赏
  • 举报
回复
事件不能動態創建
sjj3000 2004-04-23
  • 打赏
  • 举报
回复
up
sogno 2004-04-23
  • 打赏
  • 举报
回复
如果可以确定,那就很简单了
那表示你需要把一个事件的处理动态附加到控件上

一个脏盆儿:

假设你要动态添加一个按钮

首先定义事件处理对象

'类模块
'Begin ButtonEventHandler
Option Explicit

Private WithEvents mButton As CommandButton

Public Sub Hook(ByVal CommandButton As Object)
Set mButton = CommandButton
End Sub

Private Sub mButton_Click()
MsgBox "Add Your Code Here"
End Sub
'End ButtonEventHandler

然后你就可以为动态添加的控件指定事件处理函数了

'窗体模块

private sub AddButton()
Dim btnObj as CommandButton
Dim EventHandler as new ButtonEventHandler
Set btnObj = Controls.Add("VB.CommandButton", "btnObj")
With btnObj
' .Index = 1
.Visible = True
.Width = 2000
.Caption = "Hello"
.Top = 1000
.Left = 1000
End With
EventHandler.Hook btnObj '从这时开始,动态添加的控件的事件,就由ButtonEventHandler对象来处理了
end sub

引申一步,你还可以用这种方法为所有的控件动态的添加事件处理函数,也可以为一个控件指定多个事件处理函数
sogno 2004-04-23
  • 打赏
  • 举报
回复
问你一个问题先,你动态创建的控件的事件处理函数在添加之前可以确定吗?
ryuginka 2004-04-23
  • 打赏
  • 举报
回复
好象控件的事件不能动态增加吧.
帮你顶
ryuginka 2004-04-23
  • 打赏
  • 举报
回复
好象控件的时间不能动态增加吧.
帮你顶

7,785

社区成员

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

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