我是vb.net的新手,实际上在这里添加我的第一个问题, 希望我的问题不要太蹩脚。
我的项目中有12个表单。 我创建了一个公共'模块,包含在各种表格中使用的程序和功能。
使用其中一个程序,我打算清除表单中的所有文本框 - 我所在的任何形式。 这是程序(在这里建议......):
Public Sub ClearTextBoxes()
Dim MyControl As Control
For Each MyControl In controls
If TypeOf MyControl Is TextBox Then
MyControl.Text = ""
End If
Next
End Sub
我想从任何形式调用它,使用表单名称,以便清除该活动表单中的所有文本框。
我想我应该使用变量(如me.name)调用该过程,并在过程本身中添加一个ByVal - 但是还无法完成
等待回复 感谢。
答案 0 :(得分:0)
试试这个方法
Public Sub CLEAR_TEXTBOXES(ByVal frm As Form)
For Each txtctrl In frm.Controls.OfType(Of Windows.Forms.TextBox)()
txtctrl.Clear()
Next
End Sub
并将其称为
CLEAR_TEXTBOXES(Me)
答案 1 :(得分:0)
你几乎拥有所需的一切。您只需要传递对要清除文本框的表单的引用。
但是您可能遇到的一个小问题是控件也可以有子控件(例如,组框中的文本框)。
这些未在.Controls
集合中提取,因此您需要一个递归方法:
Public Sub ClearTextBoxesFromAControl(ctl As Control)
For Each MyControl As Control In ctl.Controls
If TypeOf MyControl Is TextBox Then
MyControl.Text = ""
End If
If MyControl.HasChildren Then ClearTextBoxesFromAControl(MyControl)
Next
End Sub
由于表单继承自控件,您只需将表单引用传递给方法,如下所示:
ClearTextBoxesFromAControl(Me)
额外信用:您甚至可以为表单创建扩展方法来执行此操作:
在Public
模块中:
<Extension()>
Public Sub ClearAllTextBoxes(ctl As Control)
For Each MyControl As Control In ctl.Controls
If TypeOf MyControl Is TextBox Then
MyControl.Text = ""
End If
If MyControl.HasChildren Then ClearAllTextBoxes(MyControl)
Next
End Sub
然后您可以像Me.ClearAllTextBoxes