首页 文章

Visual Basic - 如何连续检查文本框的文本,然后启用按钮

提问于
浏览
0

因此,我正在尝试在Visual Basic(使用Visual Studio)中创建自己的个人待办事项列表,并且我想禁用“添加项目”按钮,直到在文本框中输入了某些内容 .

我已经尝试在表单加载时检查文本框中的文本但我不知道如何动态检查文本框中的输入然后启用/禁用按钮 .

代码我尝试过:

Public Class Form1
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

        If txtItem.Text = "" Then
            btnAddItem.Enabled = False
        Else
            btnAddItem.Enabled = True
        End If
    End Sub
End Class

编辑:没关系我已经弄清楚了 . 我从form1_load中取出代码并写道:

btnAddItem.Enabled = False

并补充说:

如果txtItem.Text()=“”那么btnAddItem.Enabled = False Else btnAddItem.Enabled = True End If

到textbox的text_changed事件 .

1 回答

  • 0

    我假设您的表单如下所示:

    Items:
        [ ] Feed fish
        [ ] Enslave world
        [X] Do laundry
        [ ] Push Plumbus through the Grumbo
    
    Add item:
        Task name: [_________]
        [Add Item]
    

    您不需要连续检查文本框 - 您只需要订阅's raised whenever the textbox'更改 .Text . 这是the TextChanged event . 请注意,当您使用自己的代码更改文本时会引发此事件,而不仅仅是用户输入:这可能是也可能不是(使用 KeyDownKeyPress 来处理这些事件) .

    (作为提示:一般来说轮询(在循环或定时器间隔中连续检查某些内容)是一个坏主意,因为它会浪费CPU时间 . 在这样的自包含程序中,当程序发生变化并且您可以处理时,程序会收到实际的事件信息这些事件恰好在事情发生变化而不是使用轮询循环时 - 只有在对外部系统(例如温度传感器或串行线路)进行采样时才需要进行轮询 - 在这些情况下,存在可以处理轮询的库或硬件为您而且在数据发生变化时公开事件) .

    您可以使用 Handles 关键字在VB.NET中设置事件处理程序,而不是手动布线事件处理程序(这会为您的程序添加一些伏都教,例如,您不能使用 Handles 来动态添加控件)

    Private Sub txtItem_TextChanged(sender As Object, e as EventArgs) Handles txtItem.TextChanged
    
        Me.btnAddItem.Enabled = Not String.IsNullOrWhitespace( Me.txtItem.Text )
    
    End Sub
    

相关问题