【问题标题】:How to Enable/Disable button upon text-box changes如何在文本框更改上启用/禁用按钮
【发布时间】:2013-06-30 15:01:42
【问题描述】:

我有一个包含目录的文本框。所以我检查当前机器上是否存在这个目录,如果不存在 - 我希望按钮被禁用。

此外,如果文本框为空,我希望按钮启用。

长话短说 - 我想在文本框发生更改时控制按钮的可用性。我知道如何检查这些更改,我也知道这是使用 EvenHandlers 和 Listeners 完成的,但我真的不知道如何使用它们,如果有人可以给我一个示例代码或如何操作的步骤说明让它 - 它会很棒。因为我需要它快。

编辑: 问题是我希望这一切都是动态的,所以我想我需要一个 Listener 来跟踪文本框值的状况。

F.e.,文本框为空,按钮已启用。然后我开始输入一个目录,因为输入的路径不是一个有效的目录 - 按钮被禁用。但是当这个目录变得有效时 - 按钮就被启用了。

【问题讨论】:

  • WinForms、WPF、ASP.NET 还是其他?
  • 哦,对不起,我更新了主题的标签。这是关于 WinForms 的。
  • 我很好奇,按钮的作用是什么?如果文件夹不存在,您希望禁用它吗?但是您想在用户输入文本框并检查文件夹是否存在时启用它?
  • Listener 是什么意思?到目前为止,您是否编写了示例代码来尝试执行上述操作?否则,您只需要处理 TextBox_TextChanged 事件,如下所述

标签: .net vb.net winforms visual-studio-2010 event-handling


【解决方案1】:

在您的表单和此代码中添加一个按钮 (Button1) 和一个文本框 (TextBox1):

    Private Sub TextBox1_TextChanged(sender As System.Object, e As System.EventArgs) Handles TextBox1.TextChanged

        If (TextBox1.Text Is Nothing Or TextBox1.Text.Trim().Length < 1) Then
            Button1.Enabled = False
        ElseIf (Not System.IO.Directory.Exists(TextBox1.Text)) Then
            Button1.Enabled = False
        ElseIf (System.IO.Directory.Exists(TextBox1.Text)) Then
            Button1.Enabled = True
        End If

    End Sub

【讨论】:

  • 但问题是我希望它是动态的,所以即使我在空文本框中更改了某些内容,并且它不是有效目录 - 然后按钮保持禁用状态,直到目录有效的。我会更新我的问题,因为我不清楚我到底想要什么。
  • 我已经相应地更新了我的代码。现在它就像你描述的那样工作。
  • 还请记住,在单击按钮后立即触发禁用。如果你想避免这第一步(也就是说,只需键入错误的目录而被禁用,而无需单击按钮),我可以再次更改代码。
  • 是的...我不想在单击按钮时禁用它。如果文本框为空或目录是否存在,我会检查 Form_Load 并确定是否禁用该按钮。因此,我只想通过键入错误的目录并仅在目录正确后才启用它来禁用它。此外,我尝试了您的代码,并看到在我键入正确的目录后 - 按钮已启用。但是当我再次删除整个文本,或者我输入了错误的目录时 - 按钮保持启用...
【解决方案2】:

如果目录不存在则禁用按钮,如果存在则启用按钮

Private Sub TextBox1_TextChanged(sender As System.Object, e As System.EventArgs) Handles TextBox1.TextChanged

    Button1.Enabled = Directory.Exists(TextBox1.Text)

End Sub

(需要Imports System.IO

【讨论】:

    【解决方案3】:

    试试这个...

    Private Sub TextBox1_TextChanged(sender As System.Object, e As System.EventArgs) Handles TextBox1.TextChanged
    
    Dim sDir as String=TextBox1.Text
    
        If sDir.Length = 0 Then
    
            Button1.Enabled = True
    
        Else
    
            Button1.Enabled = System.IO.Directory.Exists(sDir)
    
        End If
    
    End Sub
    

    【讨论】:

      猜你喜欢
      • 2018-07-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-27
      • 1970-01-01
      • 1970-01-01
      • 2015-03-21
      相关资源
      最近更新 更多