vb.net - 在一个处理程序中处理所有文本框事件

标签 vb.net

我知道如何处理表单中的文本框事件。但想让这段代码更短,因为我将有 30 个文本框。使用它是低效的:

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

关于vb.net - 在一个处理程序中处理所有文本框事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15358338/

相关文章:

vb.net - 在 ASPX 页面中使用 webmethod 服务 AJAX 请求

vb.net - 生成带有字母表前缀的数字序列

.net - 使用 Gmail SMTP 和 System.Net.Mail 发送电子邮件

c# - 使用 ISO C++ 回调注册委托(delegate)函数(在单声道上)

VB.NET:保持类命名空间与文件夹结构同步

sql-server - 如何将空日期变量传递到 SQL Server 数据库

c# - 在 VB.NET 中将类标记为静态

mysql - 如何在MYSQL中使用Like语句?

.net - VB.Net 中我的功能的文档在哪里?

asp.net - 如何在asp.net应用程序中获取Youtube嵌入式视频的描述?