У меня есть форма с 25 RichTextBoxes. Мне нужно очистить их все, когда пользователь нажимает кнопку.Очистка всех RichTextBoxes из формы (VB.NET)
Я думаю, что это как-то связано с: Me.Controls.Clear
, но я не уверен.
Спасибо за любую помощь. :)
У меня есть форма с 25 RichTextBoxes. Мне нужно очистить их все, когда пользователь нажимает кнопку.Очистка всех RichTextBoxes из формы (VB.NET)
Я думаю, что это как-то связано с: Me.Controls.Clear
, но я не уверен.
Спасибо за любую помощь. :)
Me.Controls.Clear удалит все элементы управления из коллекции Controls. Вам нужно перебрать все элементы управления в элементах управления, и если элемент управления имеет тип RichTextBox, тогда вызовите некоторый ясный метод для этого элемента управления.
Я думаю, вы могли бы использовать LINQ, чтобы выбрать все текстовые поля ... что-то вроде этого (не проверял и с синтаксисом C#)
IEnumerable<RichTextBox> txtBoxes = from txt in form1.Controls
where txt is RichTextBox
select (RichTextBox) txt;
, то вы можете сделать петлю Еогеасп очищая его.
foreach(RichTextBoxt in txtBoxes)
{
// t.clear() ... clear(t) ... t.Text=String.empty ... o whatever you want
}
Вы можете сделать это таким образом. Он очищает все текстовые поля в форме. Если вы хотите сохранить любые richtextboxes, вы можете проверить 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
Видимо любой from ctrl in form.Controls...
подход пропускает любые (богатые) текстовые поля, которые живут в пределах панели/другого контейнера. Это также то, что MarkJ сказал в комментарии к ответу Джонатана.
Вот рутина для явной рекурсии над всеми элементами управления и очистки любого элемента управления, который (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
Pass формы в качестве контроля корня, чтобы начать рекурсию, чтобы очистить все желаемые субэлементы: ClearControl(Me)
.
Я думаю, что это пропускает любые richtextboxes, которые находятся в контейнере формы, а не в корне формы. – MarkJ