禁用基于三个文本框字段的按钮

时间:2010-12-13 15:43:33

标签: vb.net winforms textbox

我对VB.net(和VS 2008)很陌生,所以我担心我的问题可能是基本的,但我不确定如何解决它。

我有一个带有三个文本框字段和一个按钮的winform。在用户单击按钮继续之前,必须填写所有文本框字段。为此,只要至少有一个空文本框,我想禁用该按钮。

如果我只有一个文本框字段,那么我很容易做到。在Textbox1_Leave活动中,我会检查Textbox1.Text是否为空,如果是,请设置Button1.Enabled = True
但是,如果我有三个文本框,我该怎么办?有三个事件处理程序,每个文本框一个?还是有一种我不熟悉的方式?

非常感谢。

5 个答案:

答案 0 :(得分:1)

AddHandler Textbox1.TextChanged, AddressOf ValidateInputs
AddHandler Textbox2.TextChanged, AddressOf ValidateInputs
AddHandler Textbox3.TextChanged, AddressOf ValidateInputs

Private Sub ValidateInputs(ByVal Sender As Object, ByVal e as EventArgs)
    Button1.Enabled = Not (Textbox1.Text = String.Empty OrElse Textbox2.Text = String.Empty OrElse Textbox3.Text = String.Empty)
End Sub

而且,更好的是,如果这些控件都具有相同的父级,并且是父级中唯一的文本框(例如,所有嵌套在组框中),您可以这样做:

For Each t As TextBox In GroupBox1.Controls.OfType(Of Textbox)
   AddHandler t.TextChanged, AddressOf ValidateInputs
Next t

Private Sub ValidateInputs(ByVal Sender As Object, ByVal e as EventArgs)
    Button1.Enabled = Not GropuBox1.Controls.OfType(Of Textbox).Any(Function(t) t.Text = String.Empty)
End Sub

答案 1 :(得分:0)

有一个通用子,用于检查三个文本框,只要有任何文本框被调用,就会被调用。

实际上会是

sub CheckBoxes
If (textbox1.text <> "") AND (textbox2.text <> "") AND (textbox3.text <> "") Then
    Button1.Enabled = True
else
    Button1.Enabled = False
End If
end sub

我很抱歉这不是VBA语法,但伪代码应该指向正确的方向。

答案 2 :(得分:0)

创建一个方法,可以检查所有三个文本框的状态,如果所有三个文本框都有文本,则启用button1。

为调用此方法的所有三个文本框创建一个事件处理程序。

编辑:作为旁注,您可能希望使用“文本已更改”事件而不是“离开”事件,因为如果在键入后他们接下来要做的事情是单击第三个文本框,则可能不会丢失按钮。

答案 3 :(得分:0)

处理变化的控件Validating事件,然后根据控件的成功验证相应地调整按钮的启用/禁用行为。

MSDN解释......

答案 4 :(得分:0)

Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If TextBox1.Text = "" Or TextBox2.Text = "" Or TextBox3.Text = "" Or TextBox4.Text = "" Or TextBox5.Text = "" Then
            Button1.Enabled = False
        End If
    End Sub
    Private Sub TextBox5_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox5.TextChanged
        If TextBox1.Text = "" Or TextBox2.Text = "" Or TextBox3.Text = "" Or TextBox4.Text = "" Or TextBox5.Text = "" Then
            Button1.Enabled = False
        Else
            Button1.Enabled = True
        End If
    End Sub