清除表单中的所有RichTextBox(VB.NET)

清除表单中的所有RichTextBox(VB.NET),vb.net,richtextbox,Vb.net,Richtextbox,我有一张有25个文本框的表格。当用户按下按钮时,我需要将它们全部清除 我想这与我有关。控制。清楚,但我不确定 谢谢你的帮助 Me.Controls.Clear将从控件集合中删除所有控件。您需要迭代控件中的所有控件,如果控件的类型为RichTextBox,则对该控件调用一些clear方法。我认为您可以使用linq选择所有的文本框。。。类似的东西没有经过测试,并且使用c语法 IEnumerable<RichTextBox> txtBoxes = from txt in form1.Con

我有一张有25个文本框的表格。当用户按下按钮时,我需要将它们全部清除

我想这与我有关。控制。清楚,但我不确定


谢谢你的帮助

Me.Controls.Clear将从控件集合中删除所有控件。您需要迭代控件中的所有控件,如果控件的类型为RichTextBox,则对该控件调用一些clear方法。

我认为您可以使用linq选择所有的文本框。。。类似的东西没有经过测试,并且使用c语法

IEnumerable<RichTextBox> txtBoxes = from txt in form1.Controls
                                where txt is RichTextBox
                                select (RichTextBox) txt;

你可以这样做。它会清除表单上的所有文本框。如果要保存任何RichTextBox,可以选中ctl.name

显然,表单中的任何ctrl控件。。。该方法跳过位于面板/其他容器中的任何RichTextBox。这也是马克在评论乔纳森的回答时所说的

这里有一个例程可以显式递归所有控件,并清除任何1没有子控件,2是richtextbox的控件

Private Sub ClearControl(ByVal ctrl As Control)

    If ctrl.Controls.Count > 0 Then
        For Each subCtrl As Control In ctrl.Controls
            ClearControl(subCtrl)
        Next
    End If

    If TypeOf ctrl Is RichTextBox Then
        DirectCast(ctrl, RichTextBox).Clear()
    End If

    REM You can clear other types of controls in here as well
    If TypeOf ctrl Is TextBox Then
       DirectCast(ctrl, TextBox).Clear()
    End If

End Sub
将表单作为根控件传递,以启动递归以清除所有所需的子控件:
ClearControlMe。

我认为这会跳过表单上容器中的任何RichTextBox,而不是表单根中的RichTextBox。
Dim ctl As Control
Dim rt As RichTextBox

For Each ctl In Me.Controls
  If TypeOf (ctl) Is RichTextBox Then
    rt = ctl
    rt.Clear()
  End If
Next ctl
Private Sub ClearControl(ByVal ctrl As Control)

    If ctrl.Controls.Count > 0 Then
        For Each subCtrl As Control In ctrl.Controls
            ClearControl(subCtrl)
        Next
    End If

    If TypeOf ctrl Is RichTextBox Then
        DirectCast(ctrl, RichTextBox).Clear()
    End If

    REM You can clear other types of controls in here as well
    If TypeOf ctrl Is TextBox Then
       DirectCast(ctrl, TextBox).Clear()
    End If

End Sub