Visual Studio:通过文本框启用/禁用按钮

时间:2019-02-05 02:02:49

标签: .net vb.net winforms

我想做的是当其中一个文本框为空时,该按钮被禁用,但是一旦两个文本框被填满,它将启用该按钮。我在做什么错?预先谢谢你!

Public Class ModifiedLoanCalculatorFRM
Private Sub calculateBTN_Click(sender As Object, e As EventArgs) Handles calculateBTN.Click
    If mortgageAmountTBX.Text.Equals("") Or interestRateTBX.Text.Equals("") Then
        calculateBTN.Enabled = False
    Else
        calculateBTN.Enabled = True
    End If

3 个答案:

答案 0 :(得分:4)

您要将代码用于测试文本框的内容,然后将按钮的启用状态设置为按钮单击处理程序。这意味着只有单击该按钮时,它才会触发,并且一旦被禁用,就无法将其恢复。

如果您要基于两个文本框是否为空而动态地启用或禁用按钮,则可以将代码从按钮单击处理程序移到其自己的子例程中,然后进行“ Changed”事件在两个文本框和表单的加载事件上,调用该子例程:

Private Sub setButtonState()
    If mortgageAmountTBX.Text.Equals("") Or interestRateTBX.Text.Equals("") Then
        calculateBTN.Enabled = False
    Else
        calculateBTN.Enabled = True
    End If
End Sub

Private Sub interestRateTBX_TextChanged(sender As Object, e As EventArgs) Handles interestRateTBX.TextChanged
    setButtonState()
End Sub

Private Sub mortgageAmountTBX_TextChanged(sender As Object, e As EventArgs) Handles mortgageAmountTBX.TextChanged
    setButtonState()
End Sub

Private Sub ModifiedLoanCalculatorFRM_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    setButtonState()
End Sub

答案 1 :(得分:2)

您可以使用:

Private Sub TextBoxes_TextChanged(sender As Object, e As EventArgs) _
    Handles TextBox1.TextChanged, TextBox2.TextChanged, MyBase.Load
    Button1.Enabled = Not (String.IsNullOrEmpty(TextBox1.Text) OrElse
                           String.IsNullOrEmpty(TextBox2.Text))
End Sub

有关上述代码的注意事项:

  • 使用单个事件处理程序处理多个控件
  • 使用String.IsNullOrEmpty检查文本是否为空
  • 使用OrElse代替Or
  • 使用单个表达式设置Enabled属性。

答案 2 :(得分:0)

创建一个计时器,并在运行表单时启动它, 将此代码放在计时器刻度上

If INSERTTEXTBOXNAMEHERE.text = "" Then INSERTBUTTONNAMEHERE.enabled = false Else INSERTBUTTONNAMERHERE.enabled = True