vb.net - aktivieren/deaktivieren-Schaltfläche, abhängig von der Benutzereingabe
Als ich den letzten Schliff auf meinem Programm, ich habe einige Probleme.
Es gibt mehrere Benutzer Eingänge und einen submit-button, sobald die Eingänge gefüllt wurde, möchte ich aktivieren Sie die Schaltfläche "senden", sonst sollte der button deaktiviert werden. Dies ist, was ich habe:
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
Die Sache ist es deaktiviert nomatter was, und dann klappt es auch aktivieren wenn mein input ist eingereicht
InformationsquelleAutor | 2014-07-31
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihrem code arbeiten, wenn Sie ein weiteres Steuerelement, das den Fokus erhalten kann. Kontrolle-Validierung tritt auf den Verlust des Fokus. Wenn Sie brauchen, um nur ein Isoliertes Element aktiv ist, benötigen Sie entweder
KeyPress
,KeyDown
oderTextchanged
Veranstaltungen zu aktivieren-Taste, stellen Sie außerdem sicher, dass dieCausesValidation
Eigenschaft der TextBox auf true ist.Ich würde auch die Methode allgemeiner, so könnte man es nennen, die von mehreren textbox mit der Absender-Objekt Zugriff auf das Textfeld, das das Ereignis ausgelöst. Auch wenn Sie eine Wahr/Falsch-Bedingung, die Sie müssen nur der Vergleich in der ersten if-Anweisung und dann benutzt du ein anderes, nicht ein elseif.
Beispiel:
Können Sie auch die
String.IsNullOrWhiteSpace
Methode zu überprüfen, wenn nur Leerzeichen eingegeben wurden, wenn Sie mit dem framework 4.0 oder höher. Wie dieseTextChanged
- Event-Handler.Dies sollte funktionieren, ohne dass verwenden Sie eine UND-Anweisung. für Ihre zusätzliche Elemente, die Sie benötigen, um die CheckedShanged Ereignis für die RadioButton-und SelectedIndexChanged-oder SelectedValueChanged-Ereignisse für die ListBox
Jubel wird es zu gehen
Sieht aus wie CheckedChanged doesnt Arbeit für mich auf radios, und ich glaube nicht neeed selectedindex/valuechanged auf die Listboxen
InformationsquelleAutor Mark Hall
Sind Sie gehen zu müssen, die TextBox "
TextChanged
" event, und sicher sein, um jede TextboxAutoPostback="True"
. Sie können ein UpdatePanel um die postbacks, die auftreten, auf jede Textbox, die Sie wünschen, zu validieren, weniger anstößig zu Ihrem Ende-Benutzer.So, deine textbox (wenn Sie viele, stellen Sie sicher, Sie alle haben die OnTextChanged="ValidateForm":
In Ihrem textchanged ("ValidateForm") Veranstaltung (die jedes Textfeld angebracht ist), eine schnelle Umsetzung der route zu tun, wäre nur
Wenn Sie gehen den Weg des UpdatePanel, finden Sie möglicherweise diese nützlich.
Sicherlich, ich würde versuchen, es zu tun ohne das UpdatePanel-Erstens, weil es schwierig zu tun. Sobald Sie haben es zu arbeiten, dann können Sie versuchen, und verwenden Sie ein UpdatePanel-wenn Sie es wünschen. Verweis diesen link, wenn Sie Probleme haben. 🙂
Ich sah nicht ein ASP.NET tag auf die Frage...
ja, das ist vb.net :p oder brauchst du asp um dieses Problem zu lösen, wäre seltsam 😮
InformationsquelleAutor Nicholas V.
Dies ist die Art von Sache, die ich tun würde:
Können Sie dann fügen Sie so viele Textfelder in der
textBoxes
array, wie Sie benötigen, um zu überprüfen. Stellen Sie sicher, dass die Textfelder, um dieHandles
Liste.Ich Liebe diese nach der Prüfung alle soloutions werde versuchen, und fügen Sie radio und Zeug 🙂 werde berichten.
Der einfachste Weg zum hinzufügen von verschiedenen Arten ist die änderung der
textBoxes
- array in eineFunc(Of Boolean)
array. Dann können Sie es so nennen:Button1.Enabled = funcs.All(Function (f) f.Invoke())
.InformationsquelleAutor Enigmativity
Tun, dass der code in der Input1_TextChanged Veranstaltung
Dies ist, was ich Tat und arbeitete:
Es muss ein effizienter code, aber ich denke, dass dies Ihr problem löst.
mir weder dieser sieht eigentlich wie die einfachste und einfachste Methode für den Kram. Mein einzige problem mit es war die Taste aktiviert ist, in der beginnen, aber die festen, die, schnell 🙂
Ich denke, die downvote wäre denn Ihre Antwort stellt eine unnötige Feld und eine unnötige if-Anweisung. Es verbessert nicht auf dem OP-code und vermindert die Wartbarkeit und Lesbarkeit des Codes.
InformationsquelleAutor FutoRicky