我有一个包含25个RichTextBox的表单。当用户按下按钮时,我需要清除它们。
我认为这与Me.Controls.Clear
有关,但我不确定。
感谢您的帮助。 :)
答案 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)
。