我知道如何处理表单中的文本框事件.但是想让这段代码更短,因为我会使用30个文本框.使用它是低效的:
@H_403_8@
您可以通过编程方式使用
Private Sub TextBox1_TextChanged(ByVal sender As System.Object,ByVal e As System.EventArgs) Handles TextBox1.TextChanged,TextBox2.TextChanged,TextBox3.TextChanged,TextBox4.TextChanged,TextBox5.TextChanged,TextBox6.TextChanged,TextBox7.TextChanged,TextBox8.TextChanged,TextBox9.TextChanged,TextBox10.TextChanged Dim tb As TextBox = CType(sender,TextBox) Select Case tb.Name Case "TextBox1" MsgBox(tb.Text) Case "TextBox2" MsgBox(tb.Text) End Select End Sub
有没有办法缩短处理程序?
Controls.OfType
AddHandler
.例如:
Dim textBoxes = Me.Controls.OfType(Of TextBox)() For Each txt In textBoxes AddHandler txt.TextChanged,AddressOf txtTextChanged Next
一个处理程序为所有:
Private Sub txtTextChanged(sender As Object,e As EventArgs) Dim txt = DirectCast(sender,TextBox) Select Case txt.Name Case "TextBox1" MsgBox(txt.Text) Case "TextBox2" MsgBox(txt.Text) End Select End Sub