我编写了一个以我的形式清空所有TextBox的函数:
Private Sub effacer()
For Each t As TextBox In Me.Controls
t.Text = Nothing
Next
End Sub
但我有这个问题:
无法将类型为“System.Windows.Forms.Button”的对象强制转换为类型 'System.Windows.Forms.TextBox'。
我尝试添加此If TypeOf t Is TextBox Then
,但我遇到了同样的问题
答案 0 :(得分:5)
Controls
集合包含表单的所有控件,而不仅仅是TextBoxes。
相反,您可以使用Enumerable.OfType
查找并投射所有TextBoxes
:
For Each txt As TextBox In Me.Controls.OfType(Of TextBox)()
txt.Text = ""
Next
如果你想以“老派”的方式做同样的事情:
For Each ctrl As Object In Me.Controls
If TypeOf ctrl Is TextBox
DirectCast(ctrl, TextBox).Text = ""
End If
Next
答案 1 :(得分:2)
For Each t As TextBox In Me.Controls
此处此行尝试将每个控件转换为TextBox
您需要将其更改为As Control
,或在迭代之前使用Me.Controls.OfType(Of TextBox)()
过滤集合。
答案 2 :(得分:0)
这是一行代码,它将清除groupBox中的所有radioButtons,它们附加到button_click:
groupBoxName.Controls.OfType<RadioButton>().ToList().ForEach(p => p.Checked = false);
使用适当的更改使其适应您的需求。