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

时间:2009-11-14 16:51:34

标签: vb.net richtextbox clear

我有一个包含25个RichTextBox的表单。当用户按下按钮时,我需要清除它们。

我认为这与Me.Controls.Clear有关,但我不确定。

感谢您的帮助。 :)

4 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

我认为你可以使用linq来选择所有文本框......就像这样(没有经过测试并使用c#语法)

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

然后你可以做一个foreach循环清除它。

foreach(RichTextBoxt in txtBoxes)
{
    // t.clear() ... clear(t) ... t.Text=String.empty ... o whatever you want
}

答案 3 :(得分:0)

显然,任何from ctrl in form.Controls...方法都会跳过面板/其他容器中的任何(丰富)文本框。这也是MarkJ在对Jonathan的回答中所说的话。

这是一个明确递归所有控件并清除(1)没有子节点的控件,(2)是(丰富)文本框的例程。

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

将表单作为根控件传递以开始递归以清除所有所需的子控件: ClearControl(Me)