Announcement

Collapse
No announcement yet.

MaskedTextBox validate

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • MaskedTextBox validate

    Hallo zusammen,

    wie kann ich denn nach der eingabe eines texttes in eine masked textbox prüfen, ob die eingabe richtig war?

    Ich hatte schon isvalid gesucht, um das in einer if-anweisung nutzen zu können, aber da dabe ich nichts gefunden.

    hat da jemand ne idee?


    gruß anno

  • #2
    Hallo,

    die "Basisprüfung" findet durch Mask automatisch statt, ohne dass eines der Valid*-Ereignisse benötigt wird. Wenn dies nicht genügt, kannst Du zusätzlich ValidatingType und TypeValidationCompleted benutzen. Nähere Erläuterungen stehen (natürlich) in der SDK-Doku/MSDN.

    Gruß Jürgen

    Comment


    • #3
      ich habe mir mal eine maskedtextbox mit er maske 000/000 erstellt

      wenn ich jetzt alle zahlen in das feld eingegeben habe, wird das ereignis TypeValidationCompleted nicht ausgelöst.

      wodran kann das liegen?

      Code:
      Private Sub maskedtextbox_TypeValidationCompleted(ByVal sender As System.Object, ByVal e As System.Windows.Forms.TypeValidationEventArgs) Handles maskedtextbox.TypeValidationCompleted
      
      msgbox("hanlde ausgeührt")
      
      end sub
      das gleiche ist wenn ich ein neues projekt anlege. diese validierungsfunktion wird einfach nicht ausgeführt.

      Im folgenden Codebeispiel wird versucht, die Eingabe des Benutzers als gültiges DateTime-Objekt zu analysieren. Wenn dies fehlschlägt, zeigt der TypeValidationCompleted-Ereignishandler eine Fehlermeldung an. Wenn der Wert ein gültiger DateTime-Wert ist, wird durch den Code geprüft, ob das angegebene Datum nicht vor dem heutigen Datum liegt. Für dieses Codebeispiel ist es erforderlich, dass das Windows Forms-Projekt ein MaskedTextBox-Steuerelement mit dem Namen MaskedTextBox1 und ein ToolTip-Steuerelement mit dem Namen ToolTip1 besitzt.



      Code:
      Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
          Me.MaskedTextBox1.Mask = "00/00/0000"
          Me.MaskedTextBox1.ValidatingType = GetType(System.DateTime)
      
          Me.ToolTip1.IsBalloon = True
      End Sub
      
      Private Sub MaskedTextBox1_TypeValidationCompleted(ByVal sender As Object, ByVal e As TypeValidationEventArgs) Handles MaskedTextBox1.TypeValidationCompleted
          If (Not e.IsValidInput) Then
              Me.ToolTip1.ToolTipTitle = "Invalid Date"
              Me.ToolTip1.Show("The data you supplied must be a valid date in the format mm/dd/yyyy.", Me.MaskedTextBox1, 0, -20, 5000)
          Else
              ' Now that the type has passed basic type validation, enforce more specific type rules.
              Dim UserDate As DateTime = CDate(e.ReturnValue)
              If (UserDate < DateTime.Now) Then
                  Me.ToolTip1.ToolTipTitle = "Invalid Date"
                  Me.ToolTip1.Show("The date in this field must be greater than today's date.", Me.MaskedTextBox1, 0, -20, 5000)
                  e.Cancel = True
              End If
          End If
      End Sub
      
      ' Hide the tooltip if the user starts typing again before the five-second display limit on the tooltip expires.
      Private Sub MaskedTextBox1_KeyDown(ByVal sender As Object, ByVal e As KeyEventArgs) Handles MaskedTextBox1.KeyDown
          Me.ToolTip1.Hide(Me.MaskedTextBox1)
      End Sub
      was mir allerdings aufgefallen ist, ist dass diese aktion erster ausgelöst wird, wenn ich im debugger mein formular wieder schließen will.
      Zuletzt editiert von anno; 26.01.2009, 14:00.

      Comment


      • #4
        Originally posted by anno View Post
        ich habe mir mal eine maskedtextbox mit er maske 000/000 erstellt

        wenn ich jetzt alle zahlen in das feld eingegeben habe, wird das ereignis TypeValidationCompleted nicht ausgelöst.

        wodran kann das liegen?
        Hast Du auch ValidatingType festgelegt (siehe Beispiel)? Ich vermute: nein.

        was mir allerdings aufgefallen ist, ist dass diese aktion erster ausgelöst wird, wenn ich im debugger mein formular wieder schließen will.
        Siehe in der SDK-Doku/MSDN:
        MaskedTextBox.TypeValidationCompleted-Ereignis (Hinweise)
        Die Validierungssequenz beginnt, wenn eines der folgenden Ereignisse eintritt:
        * Das MaskedTextBox-Steuerelement verliert den Fokus.
        * Der Wert der Text-Eigenschaft wird abgerufen.
        * Die ValidateText-Methode wird aufgerufen.
        Vielleicht fehlt eine dieser Voraussetzungen. Jürgen

        Comment


        • #5
          ok hat funktionert, danke für die hilfe.

          Comment

          Working...
          X