我在textboxes
内有大约7个RectangleShapes
,其中包含Microsoft.VisualBasic.PowerPacks
dll,我想要检索并应用一些验证。我有以下代码从表单中检索所有textboxes
,这不是预期的。有谁知道如何仅检索textboxes
内的RectangleShape
?
Dim empty = Me.Controls.OfType(Of TextBox)().Where(Function(txt) txt.Text.Length = 0)
'empty will fetch all the textboxes inside form'
If empty.Any Then
MessageBox.Show("Some of the fields are empty.!")
Exit Sub
End If
我尝试了这个Me.RectangleShape1.Controls
这是无效的,但我没有任何其他想法来获取这个!!
欢迎任何建议或想法。以下是{strong}添加服务的textbox
位于RectangleShape1
答案 0 :(得分:3)
我发现每个AccessibleDescription
都有一个名为textbox
的属性,我为此设置了一个值,在检索时我只是按照以下方式执行:
Dim empty = Me.Controls.OfType(Of TextBox)().Where(Function(txt) txt.Text.Length = 0
And txt.AccessibleDescription = "JobControls")
If empty.Any Then
MessageBox.Show("Some of the fields are empty.!")
Exit Sub
End If
希望有人发现它有用
答案 1 :(得分:1)
因为形状没有控件你必须检查每个文本框的位置是否在矩形内部。它有点乱,但它会起作用。
这是我的解决方案:
Dim txts As New List(Of TextBox)
Dim x1 = RectangleShape1.Left
Dim y1 = RectangleShape1.Top
Dim x2 = RectangleShape1.Left + RectangleShape1.ClientRectangle.Width
Dim y2 = RectangleShape1.Top + RectangleShape1.ClientRectangle.Height
For Each Control In Me.Controls
If TypeOf Control Is TextBox Then
Dim txt As TextBox = Control
Dim tx = txt.Left, ty = txt.Top
If tx >= x1 And tx <= x2 And ty >= y1 And ty <= y2 Then
txts.Add(txt)
End If
End If
Next
Dim empty = txts.Where(Function(txt) txt.Text.Length = 0)
If empty.Any Then MsgBox("Some field(s) are empty")