You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VB 2008中如何为动态创建的PictureBox编写私有子过程?

解决VB 2008动态生成PictureBox的鼠标点击事件绑定问题

动态生成的控件没法直接用Handles语句绑定事件——因为这些控件是运行时才创建的,设计阶段不存在。你需要在创建每个PictureBox的时候,用AddHandler手动把它的MouseClick事件关联到通用的处理过程上。

修改后的Form3_Load代码

在创建每个pb对象后,添加一行绑定事件的代码:

Private Sub Form3_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Dim t As Integer = 484
    Dim i As Integer = 32
    Dim ex_picbox(t) As PictureBox
    Dim zhj As Integer = 0
    For b = 1 To t / i
        For f = 1 To i + 1
            Dim pb As New PictureBox
            ex_picbox(f + b * i - i) = pb
            ex_picbox(f + b * i - i).Width = 22 'or whatever
            ex_picbox(f + b * i - i).Height = 23
            ex_picbox(f + b * i - i).Top = 367 + f * 29 - 29 'or whatever
            ex_picbox(f + b * i - i).Image = My.Resources.black
            ex_picbox(f + b * i - i).SizeMode = PictureBoxSizeMode.StretchImage
            ex_picbox(f + b * i - i).Name = "PictureBox" & CInt(f)
            If f = 1 Then
                Button1.Text = "PictureBox" & CInt(f)
            End If
            ex_picbox(f + b * i - i).Left = 367 + (28) * b
            ' 绑定鼠标点击事件到通用处理过程
            AddHandler pb.MouseClick, AddressOf PictureBox_MouseClick
            Me.Controls.Add(pb)
        Next
    Next
End Sub

通用鼠标点击事件处理过程

写一个不带Handles的私有子过程,所有动态生成的PictureBox都会触发这个过程:

Private Sub PictureBox_MouseClick(ByVal sender As Object, ByVal e As MouseEventArgs)
    ' 如需区分点击的是哪个PictureBox,可将sender转换为PictureBox对象
    Dim clickedPb As PictureBox = DirectCast(sender, PictureBox)
    ' 示例:输出被点击控件的名称
    MessageBox.Show($"点击了控件:{clickedPb.Name}")
    ' 你的关闭窗体逻辑
    Close()
End Sub

补充说明

  • AddHandler pb.MouseClick, AddressOf PictureBox_MouseClick的作用是将当前创建的pb对象的MouseClick事件,关联到你定义的通用处理过程上。
  • 如果需要针对不同PictureBox执行不同逻辑,可以通过sender获取当前控件,再根据它的Name、Tag等属性判断操作。

内容的提问来源于stack exchange,提问作者Yacov Frenkel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 13:46:03