我正在寻找解决此代码的方法:
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”。
答案 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