Laden...

[gelöst] Masked Textbox - Kann doch nicht so schwer sein??

Erstellt von andreas-82 vor 16 Jahren Letzter Beitrag vor 16 Jahren 3.174 Views
andreas-82 Themenstarter:in
42 Beiträge seit 2006
vor 16 Jahren
[gelöst] Masked Textbox - Kann doch nicht so schwer sein??

Hi erstmal,
ich glaub ich steh gerade wie nen Ochse vorm Berg, wobei der Berg eigentlich nicht allzu groß sein kann:

Also ganz Simpel, ich habe eine MaskedTextbox in der ich ein Datum validieren möchte.
Über das TypeValidationCompleted-Event überprüfe ich, ob ein Gültiges Datum eingegeben wurde:

    private void txtRelease_TypeValidationCompleted(object sender, TypeValidationEventArgs e)
    {
      if (!e.IsValidInput)
      {
        MessageBox.Show("Ungültige Eingabe!");
        txtRelease.ResetText();
        txtRelease.Focus();
      }
      else
      {
        tmpLied.ReleaseDatum = (DateTime)e.ReturnValue;  
      }
    }

Das Problem ist jetzt, dass das Event auch ausgelöst wird, wenn der Focus der Textbox verlassen wird, auch wenn nichts eingegeben wurde.
In diesem Fall soll gar nichts passieren.

Da muss es doch eine simple Möglichkeit geben ??
Irgendwas in der Richtung:


if (!e.IsValidInput && txtRelease != "")

Nur die txtRelease ist ja nicht leer, es steht ja die Maske .__ drin!

~ There's no knowledge that is not power~

3.430 Beiträge seit 2007
vor 16 Jahren

Hallo andreas-82,

probiere mal, anstatt dem hier

  
if (!e.IsValidInput && txtRelease != "")  
  

das hier...

  
if (!e.IsValidInput && txtRelease != "__.__.____")  
  

Das ist zwar eine Quick-and-Dirty Lösung, sie sollte aber den gewünschten Erfolg bringen... 😉

Gruss
MichlG

1.985 Beiträge seit 2004
vor 16 Jahren

Hallo zusammen,

für so eine Abfrage bitte nicht die Maske direkt in der Abfrage verwenden. Für so etwas gibt es zwei Properties: MaskCompleted und MaskFull.

Die Doku sagt dazu folgendes:

MaskCompleted
Gets a value indicating whether all required inputs have been entered into the input mask.

MaskFull:
Gets a value indicating whether all required and optional inputs have been entered into the input mask.

Ich denke, damit kommst Du ans Ziel.

Gruß,
Fabian

"Eine wirklich gute Idee erkennt man daran, dass ihre Verwirklichung von vornherein ausgeschlossen erscheint." (Albert Einstein)

Gefangen im magischen Viereck zwischen studieren, schreiben, lehren und Ideen umsetzen…

Blog: www.fabiandeitelhoff.de

S
142 Beiträge seit 2007
vor 16 Jahren

Nur die txtRelease ist ja nicht leer, es steht ja die Maske .__ drin!

Hallo Andreas-82,

ob in der .TEXT eigenschaft einer MaskedTextboxen auch diese Zeichen enthalten sind (in deinem Falle "_" und ".") kannst du über die Eigenschaft "TextMaskFormat" definieren... wenn du im Falle keiner eingabe ein leeres Ergebnis haben möchtest, wäre da der Wert "ExcludePromptAndLiterals" angebracht.

Mfg Steav

andreas-82 Themenstarter:in
42 Beiträge seit 2006
vor 16 Jahren

für so eine Abfrage bitte nicht die Maske direkt in der Abfrage verwenden. Für so etwas gibt es zwei Properties: MaskCompleted und MaskFull. Hey danke @Fabian!
Das war genau das wonach ich gesucht hatte! 👅

Hab da wohl irgendwie Tomaten auf den Augen gehabt oder so 🤔

Habs auf jeden Fall jetzt so gelöst:

    private void txtRelease_TypeValidationCompleted(object sender, TypeValidationEventArgs e)
    {
      if (txtRelease.MaskCompleted)
      {
        if (!e.IsValidInput)
        {
          MessageBox.Show("Ungültige Eingabe!");
          txtRelease.ResetText();
          txtRelease.Focus();
        }
        else
        {
          tmpLied.ReleaseDatum = (DateTime)e.ReturnValue;
        }
      }
    }

Vielen Dank nochmals!

~ There's no knowledge that is not power~