【问题标题】:How to convert Microsoft.VisualBasic.Compatibility.VB6.PictureBoxArray into .net 4.7.2如何将 Microsoft.VisualBasic.Compatibility.VB6.PictureBoxArray 转换为 .net 4.7.2
【发布时间】:2019-09-12 01:15:01
【问题描述】:

我正在尝试将我的项目 VB6 迁移到 .net 4.7.2,但 PictureBoxArray 类现在已过时。下面我提到了我的代码。

Private component As System.ComponentModel.IContainer
Public WithEvents IMG_LIGHT As Microsoft.VisualBasic.Compatibility.VB6.PictureBoxArray

Me.IMG_LIGHT=New Microsoft.VisualBasic.Compatibility.VB6.PictureBoxArray(components)

如何修复该代码。

【问题讨论】:

  • 最佳行动方案取决于您实际想要达到的目标。 VB6 中存在控件数组,因此您可以使用单一方法处理多个控件的事件。 VB.NET 对此有不同的机制。如果您需要除此之外的数组功能,那么您可以在代码中创建一个 PictureBoxes 数组,就像创建 StringInteger 数组一样。

标签: vb.net vb6 vb6-migration


【解决方案1】:

您不能像以前在 VB6 中那样执行此操作,但有一些解决方案可以获得您正在寻找的行为,这取决于@jmcilhinney 提到的内容。

一种简单的方法是遍历 Form 的 Controls 集合中的控件(或您可以在其中放置其他控件的任何控件,例如 GroupBox):

Dim pictureBox As PictureBox
Dim control As Control

For Each control In Me.Controls

    If TypeOf control Is PictureBox Then

        ' Get PictureBox
        pictureBox = CType(control, PictureBox)

        ' Do something with PictureBox

    End If

Next

在类似的循环中,当你的控件被初始化时,你可以使用 AddHandler 为所有的 PictureBox 控件添加一个公共事件处理程序:

For Each control As Control In Me.Controls

    If TypeOf control Is PictureBox Then

        ' Get PictureBox
        pictureBox = CType(control, PictureBox)

        AddHandler pictureBox.Clicked, AddressOf PictureBox_Clicked

    End If

Next

这可能是所有 PictureBox 的 Clicked 事件的通用事件处理程序:

Private Sub PictureBox_Click(sender As Object, e As EventArgs)
    Dim pictureBox As PictureBox = sender

    ' Handle PictureBox Click event in here

End Sub

要识别您的各个 PictureBox 控件,您可以在控件的 Tag 属性中存储一个索引值。这不像让 VB6 为您的控件索引那样令人愉快,但它应该可以工作。您可以在添加事件处理程序的同一循环中自动索引控件。

查看以下帖子:

  1. How to create Control Arrays in VB .NET:请参阅第二个答案中的 Looping Through the Controls Collection,这可能就是您要找的。​​li>
  2. Control Arrays in VB.NET

【讨论】:

  • Étienne 我认为将这些外部页面的关键元素复制到您的答案中是个好主意。外部链接最终会失效,因此答案的用处会大大减少。
  • 确实,感谢您的提醒。添加了一个简单的例子。
猜你喜欢
  • 1970-01-01
  • 2021-10-03
  • 2021-12-25
  • 2021-12-19
  • 2011-12-05
  • 2018-04-11
  • 2020-03-04
  • 2012-07-06
  • 2022-01-16
相关资源
最近更新 更多