首页 > 解决方案 > 在 VB.Net 中完成简单任务的更好方法

问题描述

所以,我有一个学校的小测试,我需要禁用三个单选按钮,这些单选按钮在面板中尽可能少的代码,而两个文本框的内容是空的。一旦两个文本框都填满,我就启用面板。

下面的解决方案显然适用于一个文本框,但是两个文本框会发生什么?我知道我可以覆盖每个按钮 KeyPress 并同时检查两个文本框。但我想花哨。问题是我认为我无法像这样解决这个问题。

或者是吗?

Public Class Form1
    Public Sub vacios(sender As Object, e As System.Windows.Forms.KeyPressEventArgs)
        Panel1.Enabled = (sender.Text <> "")
    End Sub

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        AddHandler txtNombre.KeyPress, AddressOf vacios
        AddHandler txtApellido.KeyPress, AddressOf vacios
    End Sub
End Class

注意-我知道我可以做到但我想变得花哨。

Public Class Form1
    Private Sub txtNombre_TextChanged(sender As Object, e As EventArgs) Handles txtNombre.TextChanged
        Panel1.Enabled = (txtNombre.Text <> "" And txtApellido.Text <> "")
    End Sub

    Private Sub txtApellido_TextChanged(sender As Object, e As EventArgs) Handles txtApellido.TextChanged
        Panel1.Enabled = (txtNombre.Text <> "" And txtApellido.Text <> "")
    End Sub
End Class

标签: vb.netevents

解决方案


在 VB 中,您可以通过在末尾添加“Handles Object1.Event,Object2.Event ...”来为同一个 sub 设置多个句柄。

这是我在这种情况下会做的一个例子

 Public Class Form1

        Private Sub panel1TextBoxes_TextChanged(sender As Object, e As EventArgs) Handles txtApellido.TextChanged,txtNombre.TextChanged
            Panel1.Enabled = (txtNombre.Text <> String.Empty And txtApellido.Text <> String.Empty)
        End Sub
    End Class

推荐阅读