如何检查一个GroupBox中是否存在对象 - VB.NET
如何检查一个对象(在这种情况下,我的对象是一个ButtonBox)是否存在于一个GroupBox中,但在一个确切的位置。如何检查一个GroupBox中是否存在对象 - VB.NET
事情是这样的:
If Groupbox1.NameOfButtonBox.location(40,190) exists then
Do my code
end if
我知道的语法是完全错误的,但它只是一个例子
为了使用这个按钮类型而不是特定的按钮的实例,您将需要检查找到的控件的类型。你还需要确保那里有一个控制。这是一个函数,它将检查一个groupbox是否在给定的坐标中包含一个按钮。
Private Function ButtonExists(ByVal group As GroupBox, ByVal x As Integer, ByVal y As Integer) As Boolean
'No sense checking if there isn't a group box
If group Is Nothing Then
Return False
End If
'Find the control at the given point
Dim ctrl As Control = group.GetChildAtPoint(New Point(x, y))
'If there is a control at that point check to see if it's a button
If ctrl IsNot Nothing AndAlso TypeOf (ctrl) Is Button Then
Return True
End If
Return False
End Function
感谢@Briddums代码正在工作。 现在我必须为每个Button动态设置BackgroundImage。 我有4个按钮,每个按钮都被命名为“Button1”,“Button2”等。 所以基本上我有这样的事情: 'n = 1时至4 DO 按钮和n.BackgroundImage = Image.FromFile(XXXXXXX) next' 再次声明,我有问题的按钮类型,而不是因为具有一个静态的按钮实例,我想要一个动态的实例。 你能帮我这个吗? 谢谢 – 2012-01-06 23:07:10
@EricFernandez最简单的方法是遍历groupbox中的按钮控件。对于Groupbox1.Controls中的每个控件作为控件如果Typeof(ctrl)是Button然后ctype(ctrl,Button).BackgroundImage = Image.FromFile(xxx) – briddums 2012-01-09 14:35:20
谢谢@briddums。它工作正常:D – 2012-01-09 18:45:03
退房GetChildAtPoint:
Dim ctrl As Control = GroupBox1.GetChildAtPoint(New Point(147, 96))
If TypeOf ctrl Is Button Then
Dim btn As Button = DirectCast(ctrl, Button)
'Do your code
End If
感谢迈克的代码,如果工作,部分... 那么问题是,我想检查是否有任何ButtonBox在该位置,所以我不会在IF语句中写入特定的buttonbox名称。例如: Dim ctrl As Control = Me.GetChildAtPoint(New Point(147, 96)) If ANYButtonBox.Equals(ctrl) Then 'Do your code End If
–
2012-01-05 23:08:07
更新了示例代码,以更准确地反映您正在尝试执行的操作。 – 2012-01-06 13:20:25
*不要*测试控制的位置属性。当窗体在具有不同视频DPI设置的机器上自动缩放时,控件将四处移动。为什么你想要做到这一点,否则无法猜测。 – 2012-01-05 22:05:12
那么让我解释一下。我有一个Groupbox内有4个按钮的表单,每个按钮都有自己的背景图像。我想要做的是检查是否有任何按钮存在于该确切位置(每个按钮都有其自己的确切位置),如果没有,则会在该位置放置一个新按钮,直到Groupbox有4个按钮(因此它将有4个位置)然后一个新的Groupbox将被创建,如果“旧”已经有4个按钮等等。用户将为每个新按钮提供名称。 – 2012-01-05 23:44:28
好吧,只要跟踪你做了什么,所以你不必找到困难的方式。当你创建一个按钮时,也将它添加到你存储在类的字段中的List(Of Button)。如果您需要多个组框,则列表(Of List(Of Button))。 – 2012-01-06 00:19:48