使用 Me.Controls() 函数更改子对象的属性时出现问题
Issues with changing a child object's properties using the Me.Controls() function
我在 vb.net 中(更具体地说,在 VB.net Windows 表单应用程序中)的子对象和父对象存在一个大问题。
对于这段代码,我使用 Me.Controls() 函数非常重要,因为它允许我存储一个与对象同名的字符串,并从该字符串调用该对象。
Public PieceArray(7) As PictureBox
PieceArray(0) = WK1
PieceArray(1) = WQ1
PieceArray(2) = WB1
PieceArray(3) = WB2
PieceArray(4) = WN1
PieceArray(5) = WN2
PieceArray(6) = WR1
PieceArray(7) = WR2
For x = 0 To 7
Checkerboard.Controls.Add(PieceArray(x))
Next
Me.Controls(WR1).Location = New Point(0,0)
但是,我发现一旦将对象分配给父对象,我就无法访问这些对象。我尝试了多行,例如:
'Me.Controls(WR1).Location = New Point(0,0)
'Me.Controls("WR1").Location = New Point(0,0)
'Me.Controls(Checkerboard(WR1)).Location = New Point(0,0)
'Checkerboard.Controls(WR1).Location = New Point(0,0)
'Checkerboard.Controls("WR1").Location = New Point(0,0)
但是,同样的问题仍然存在。请问有人可以就此给我建议吗?
非常感谢,
阿尔菲
注意:如果我把行
Me.Controls("WR1").Location = New Point(0,0)
在 for 循环之前,代码执行完美,这意味着 Me.Controls() 可以处理变量名称的字符串,但不适用于具有父项的字符串。
Control.Controls
仅 returns 直接包含在 Control 中的控件。为了使用控件 属性,您需要 运行“parents”而不是 Me
。相反,您可以使用 Control.Controls.Find
函数
Me.Controls.Find(WR1, True).Single().Location = New Point(0, 0)
' True as the second argument indicates you want to search all children
我在 vb.net 中(更具体地说,在 VB.net Windows 表单应用程序中)的子对象和父对象存在一个大问题。
对于这段代码,我使用 Me.Controls() 函数非常重要,因为它允许我存储一个与对象同名的字符串,并从该字符串调用该对象。
Public PieceArray(7) As PictureBox
PieceArray(0) = WK1
PieceArray(1) = WQ1
PieceArray(2) = WB1
PieceArray(3) = WB2
PieceArray(4) = WN1
PieceArray(5) = WN2
PieceArray(6) = WR1
PieceArray(7) = WR2
For x = 0 To 7
Checkerboard.Controls.Add(PieceArray(x))
Next
Me.Controls(WR1).Location = New Point(0,0)
但是,我发现一旦将对象分配给父对象,我就无法访问这些对象。我尝试了多行,例如:
'Me.Controls(WR1).Location = New Point(0,0)
'Me.Controls("WR1").Location = New Point(0,0)
'Me.Controls(Checkerboard(WR1)).Location = New Point(0,0)
'Checkerboard.Controls(WR1).Location = New Point(0,0)
'Checkerboard.Controls("WR1").Location = New Point(0,0)
但是,同样的问题仍然存在。请问有人可以就此给我建议吗?
非常感谢, 阿尔菲
注意:如果我把行
Me.Controls("WR1").Location = New Point(0,0)
在 for 循环之前,代码执行完美,这意味着 Me.Controls() 可以处理变量名称的字符串,但不适用于具有父项的字符串。
Control.Controls
仅 returns 直接包含在 Control 中的控件。为了使用控件 属性,您需要 运行“parents”而不是 Me
。相反,您可以使用 Control.Controls.Find
函数
Me.Controls.Find(WR1, True).Single().Location = New Point(0, 0)
' True as the second argument indicates you want to search all children