VB 动态生成Image 控件怎么绑定 Click 事件

OptionExplicitPrivateWithEventsNewlbl10AsImagePrivateWithEventsNewlblAsImagePrivateSu... Option Explicit
Private WithEvents Newlbl10 As Image
Private WithEvents Newlbl As Image
Private Sub Newlbl10_Click()
MsgBox "This is a dynamically added button."
End Sub
Private Sub Newlbl_Click()
MsgBox "This is a dynamically added button."
End Sub
Private Sub Form_Load()
Dim Newlbl
Dim i As Integer
Dim bqname
For i = 1 To 4
bqname = "Image" & i
Set Newlbl = Controls.Add("VB.image", bqname)
Newlbl.Left = ((i) * 110) + 25
Newlbl.Top = 97
Newlbl.ZOrder
Controls(bqname).Picture = LoadPicture("bg.jpg")
Newlbl.Visible = True
Next i
End Sub
展开
 我来答
网海1书生
科技发烧友

推荐于2016-12-02 · 擅长软件设计、WEB应用开发、小程序
网海1书生
采纳数:12311 获赞数:26225

向TA提问 私信TA
展开全部

VB6的动态生成的控件绑定事件只能一一对应进行绑定,换句话说就是生成一个控件就要写一个事件代码与之对应,不能够多个控件对应一个事件代码,也不支持控件数组。这就造成这种功能的实用性大打折扣,我不知道这算不算是VB6的一个bug。

下面是我修改后的代码:

Option Explicit

Dim WithEvents Newlbl1 As Image
Dim WithEvents Newlbl2 As Image
Dim WithEvents Newlbl3 As Image
Dim WithEvents Newlbl4 As Image

Private Sub Newlbl1_Click()
    MsgBox "This is a dynamically added button."
End Sub

Private Sub Newlbl2_Click()
    MsgBox "This is a dynamically added button."
End Sub

Private Sub Newlbl3_Click()
    MsgBox "This is a dynamically added button."
End Sub

Private Sub Newlbl4_Click()
    MsgBox "This is a dynamically added button."
End Sub

Private Sub Form_Load()
    Set Newlbl1 = Controls.Add("VB.image", "Img1")
    Newlbl1.Move 135, 97
    Newlbl1.Picture = LoadPicture("bg.jpg")
    Newlbl1.Visible = True
    Set Newlbl2 = Controls.Add("VB.image", "Img2")
    Newlbl2.Move 245, 97
    Newlbl2.Picture = LoadPicture("bg.jpg")
    Newlbl2.Visible = True
    Set Newlbl3 = Controls.Add("VB.image", "Img3")
    Newlbl3.Move 355, 97
    Newlbl3.Picture = LoadPicture("bg.jpg")
    Newlbl3.Visible = True
    Set Newlbl4 = Controls.Add("VB.image", "Img4")
    Newlbl4.Move 465, 97
    Newlbl4.Picture = LoadPicture("bg.jpg")
    Newlbl4.Visible = True
End Sub
追问
图片是从数据库里输出的 每个图片绑定一个链接。 怎么操作
追答

个人建议你尽量不要使用这种动态生成控件的方式,而是使用“半动态”的方式,即先在窗体中放入一个Image,再把它的Index属性设为0,然后程序中可以用Load命令来动态添加控件,比如:

For i = 1 To 4
    Load Image1(i)
    Image1(i).Picture = LoadPicture("bg.jpg")
    Image1(i).Move 120 * i + 150, 120
    Image1(i).Visible = True
Next

这样的话就可以用一个事件代码来响应所有动态添加的控件(按常规方式处理即可),编程也会简单得多。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式