【问题标题】:Visual Studio: Enable/Disable Button Through TextBoxVisual Studio:通过文本框启用/禁用按钮
【发布时间】:2019-02-05 02:02:49
【问题描述】:

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

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

【问题讨论】:

    标签: .net vb.net winforms


    【解决方案1】:

    您将代码用于测试文本框的内容,然后将按钮的启用状态设置到按钮单击处理程序中。这意味着它只会在单击按钮时触发,如果它被禁用,则无法将其恢复。

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

    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
    

    【讨论】:

      【解决方案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 属性。

      【讨论】:

      • 虽然接受的答案有效,但代码需要一些改进。上面的代码更简洁,性能更好。
      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 2016-03-09
        • 2015-03-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多