当我对我的节目进行最后润色时,我遇到了一些麻烦。 有几个用户输入和一个提交按钮,一旦填充了输入,我希望启用提交按钮,否则应该禁用该按钮。这就是我所拥有的:
Private Sub ButtonControl(sender As System.Object, e As System.EventArgs) Handles Input1.Validated
If Input1.Text = "" Then
ButtonSubmit.Enabled = False
ElseIf Input1.Text <> "" Then
ButtonSubmit.Enabled = True
End If
End Sub
事情就是禁用nomatter什么,然后当我的输入被提交时它不会启用
答案 0 :(得分:2)
如果您有另一个可以获得焦点的控件,您的代码将会起作用。控制验证在失去焦点时发生。如果您只需要激活一个可关注项,则需要使用KeyPress
,KeyDown
或Textchanged
事件来启用您的按钮,同时确保CausesValidation
属性你的TextBox是真的。
我还会使该方法更通用,因此您可以使用sender对象访问引发事件的文本框,从多个文本框中调用它。此外,如果您有一个True / False条件,您只需要在第一个if语句中进行比较,然后您只使用else而不是elseif。
例如:
Private Sub ButtonControl(sender As System.Object, e As System.EventArgs) Handles Input1.Validated
If DirectCast(sender, TextBox).Text = "" Then
ButtonSubmit.Enabled = False
Else
ButtonSubmit.Enabled = True
End If
End Sub
如果您使用的是4.0或更高版本的框架,也可以使用String.IsNullOrWhiteSpace
方法检查是否只输入了空格。像这个TextChanged
EventHandler。
Private Sub ButtonControl(sender As Object, e As EventArgs) Handles Input1.TextChanged
If String.IsNullOrWhiteSpace(DirectCast(sender, TextBox).Text) Then
ButtonSubmit.Enabled = False
Else
ButtonSubmit.Enabled = True
End If
End Sub
答案 1 :(得分:1)
您将需要使用TextBox "TextChanged
" event,并确保设置每个文本框AutoPostback="True"
。您可以使用UpdatePanel使您希望验证的每个文本框上发生的回发对您的最终用户不那么讨厌。
所以,你的文本框(如果你有很多,请确保它们都有OnTextChanged =“ValidateForm”:
<asp:TextBox ID="Input1" runat="server" OnTextChanged="Validate_TextChanged" />
在你的textchanged(“ValidateForm”)事件(每个Textbox附加到)中,一个快速实现路由就可以
' Validation inside this event
Protected Sub Validate_TextChanged(sender As Object, e As EventArgs)
if Input1.text <> "" AndAlso Input2.text <> "" AndAlso ' ...etc.
End Sub
如果你走了UpdatePanel的路线,你会发现this很有用。
答案 2 :(得分:1)
这是我要做的事情:
Private Sub TextBoxes_TextChanged( _
ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles _
TextBox1.TextChanged, _
TextBox2.TextChanged, _
TextBox3.TextChanged
Dim textBoxes = { TextBox1, TextBox2, TextBox3 }
Button1.Enabled = textBoxes.All(Function (tb) tb.Text <> "")
End Sub
然后,您可以根据需要在textBoxes
数组中添加任意数量的文本框。只需确保文本框为Handles
列表。
答案 3 :(得分:0)
Private Sub TextBox1_TextChanged(sender As System.Object, e As System.EventArgs) Handles TextBox1.TextChanged
If TextBox1.Text.Length > 0 Then
Me.Button1.Enabled = True
Else
Me.Button1.Enabled = False
End If
End Sub
答案 4 :(得分:-1)
在Input1_TextChanged事件中执行该代码
这就是我所做的和工作:
Dim CheckInput1 As Boolean
Private Sub Input1_TextChanged(sender As Object, e As EventArgs) Handles Input1.TextChanged, Input1.Enter
CheckInput1 = True
If Input1.Text = "" Then
CheckInput1 = False
End If
If CheckInput1 = False Then
ButtonSubmit.Enabled = False
ElseIf CheckInput1 = True Then
ButtonSubmit.Enabled = True
End If
End Sub
必须有一个更高效的代码,但我认为这可以解决您的问题。