1

我写了一个函数来清空我表单中的所有文本框:

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 ,但我遇到了同样的问题

4

3 回答 3

5

Controls集合不仅包含TextBoxes,还包含表单的所有控件。

相反,您可以使用Enumerable.OfTypefind 和 cast all 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
于 2012-10-21T20:58:28.133 回答
2
For Each t As TextBox In Me.Controls

此处的这一行尝试将每个控件强制转换为TextBox.
您需要将其更改为As Control,或用于Me.Controls.OfType(Of TextBox)()在迭代之前过滤集合。

于 2012-10-21T20:57:33.990 回答
0

这是一行代码,它将清除 groupBox 中的所有 radioButtons,它附加到 button_click:

groupBoxName.Controls.OfType<RadioButton>().ToList().ForEach(p => p.Checked = false);

使用适当的更改使其适应您的需求。

于 2016-06-03T22:23:10.067 回答