.net 从公共模块中清除多个表单中的所有文本框

.net 从公共模块中清除多个表单中的所有文本框,.net,vb.net,textbox,refactoring,controls,.net,Vb.net,Textbox,Refactoring,Controls,我是vb.net的新手,实际上在这里添加了我的第一个问题, 希望我的问题不是太蹩脚 我的项目中有12张表格。 我已经创建了一个“公共”模块,其中的程序和功能将在所有表单中使用 通过其中一个步骤,我打算清除表单中的所有文本框——我所处的任何表单。 这是程序(建议在此处某处……): 我想从任何表单调用它,使用表单名称,这样它将清除该活动表单中的所有文本框 我想我应该用一个变量(比如me.name)来调用这个过程,并在过程本身中添加一个ByVal,但目前还无法实现 等待答复 谢谢。试试这个方法 Pu

我是vb.net的新手,实际上在这里添加了我的第一个问题, 希望我的问题不是太蹩脚

我的项目中有12张表格。 我已经创建了一个“公共”模块,其中的程序和功能将在所有表单中使用

通过其中一个步骤,我打算清除表单中的所有文本框——我所处的任何表单。 这是程序(建议在此处某处……):

我想从任何表单调用它,使用表单名称,这样它将清除该活动表单中的所有文本框

我想我应该用一个变量(比如me.name)来调用这个过程,并在过程本身中添加一个ByVal,但目前还无法实现

等待答复 谢谢。

试试这个方法

 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)
试试这个方法

 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)

你几乎拥有你所需要的一切。您只需要传递对要清除其文本框的表单的引用

但您可能遇到的一个小问题是,控件也可以有子控件(例如,groupbox中的文本框)

.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)
额外积分:您甚至可以为表单创建一个扩展方法来执行此操作:

公共
模块中:

<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

公共子ClearAllTextBox(ctl作为控件)
对于每个MyControl作为ctl.Controls中的Control
如果MyControl的类型为TextBox,则
MyControl.Text=“”
如果结束
如果MyControl.HasChildren,则清除所有文本框(MyControl)
下一个
端接头

然后你可以这样称呼它
Me.clearlalltextboxs

你几乎拥有你所需要的一切。您只需要传递对要清除其文本框的表单的引用

但您可能遇到的一个小问题是,控件也可以有子控件(例如,groupbox中的文本框)

.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)
额外积分:您甚至可以为表单创建一个扩展方法来执行此操作:

公共
模块中:

<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

公共子ClearAllTextBox(ctl作为控件)
对于每个MyControl作为ctl.Controls中的Control
如果MyControl的类型为TextBox,则
MyControl.Text=“”
如果结束
如果MyControl.HasChildren,则清除所有文本框(MyControl)
下一个
端接头
然后你可以这样叫它
Me.clearlalltextboxs