我正在编写一个程序,我需要为每个文本框创建GotFocus和LostFocus事件处理程序。
现在,只要点击表单中的任何文本框,我现在就会产生错误:
Private Sub lblTotalWeight_Load(sender As Object, e As EventArgs) Handles MyBase.Load
For Each cnt In Me.Controls.OfType(Of TextBox)
AddHandler cnt.GotFocus, AddressOf txtBox_GotFocus
Next
End Sub
Private Sub txtBox_GotFocus(sender As System.Object, e As System.EventArgs)
Dim textBox As TextBox = Me.Controls.OfType(Of TextBox)
textBox.ForeColor = Color.White
textBox.BackColor = Color.LightGray
End Sub
我收到Dim textBox的错误,因为TextBox = Me.Controls.OfType(Of TextBox),我不知道为什么或如何修复它。
如果有帮助的话,将会有另一个私人潜艇参与失去焦点的活动几乎相同。
任何帮助将不胜感激
答案 0 :(得分:4)
Me.Controls.OfType(Of TextBox)
返回文本框控件列表。它在AddHandler
调用中效果很好,但在您的事件处理程序中,您需要使用sender as Textbox
。
Dim textBox As TextBox = DirectCast(sender, Textbox)
答案 1 :(得分:2)
此代码:
Me.Controls.OfType(Of TextBox)
返回IEnumerable(Of TextBox)
。它不是一个Textbox
,因此您无法将其分配给TextBox
变量。您需要访问引发事件的TextBox
:
Dim textBox As TextBox = DirectCast(sender, TextBox)
在事件处理程序中,sender
参数始终是引发事件的对象。
答案 2 :(得分:0)
Me.Controls.OfType(Of TextBox)
替换 CType(sender, TextBox)
用于事件 txtBox_GotFocus