获取Microsoft.VisualBasic.PowerPacks的RectangleShape中存在的所有文本框

时间:2015-08-08 11:41:53

标签: vb.net winforms

我在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

之外的图片

enter image description here

2 个答案:

答案 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")