以相同的形式VB.NET更改所有文本框的属性

时间:2014-04-12 14:27:52

标签: vb.net

我正在寻找解决此代码的方法:

     For Each txtbox As TextBox In Me.Controls
        If txtbox.GetType.ToString = "System.Windows.Form.TextBox" Then
            CType(txtbox, TextBox).CharacterCasing = CharacterCasing.Upper
        End If
     Next

它抛出错误:

无法将类型为“System.Windows.Forms.Button”的对象强制转换为“System.Windows.Forms.TextBox”。

2 个答案:

答案 0 :(得分:2)

创建一个文本框对象数组,而不必担心转换。因为我们没有检查类型,所以性能更好。

For Each tb As Textbox In Me.Controls.OfType(Of Textbox)()
 tb.CharacterCasing = CharacterCasing.Upper
Next

答案 1 :(得分:1)

问题是你正在遍历所有控件,甚至是按钮,并试图将每个控件转换为一个文本框,这会抛出你为一个按钮(或其他非文本框控件)所做的异常。

试试这个:

 For Each ctrl As System.Windows.Forms.Control In Me.Controls
    If TypeOf ctrl Is System.Windows.Forms.TextBox Then
        CType(ctrl, System.Windows.Forms.TextBox).CharacterCasing = CharacterCasing.Upper
    End If
 Next