none
MaskedTextBos.Mask = Zeit+Text? RRS feed

  • Frage

  • Hallo,

    ich will ein MaskedTextBox so maskieren wie folgt:

    Mask = 00:00 beliebigerText                     // Zeit+1Leerzeichen+beliebiegerText (alle Zeichen)

    wie maskiere ich dies ?

    MFG

    Samstag, 27. Februar 2016 17:52

Antworten

  • Hallo, vielen dank

    Frage ist wie kann ich an der Zeitstellen '00:00' ausgeben und beim Texteingabestellen Leerzeichen oder KeinZeichen ?

    mtb.PromptChar = '0'; => Er macht überall '00:00 000000000'

    MFG

    Hallo,

    ich reduziere das mal auf das Wesentliche:

    maskedTextBox1.Mask = "00:00 CCCCCCCCCCCCCCCCCCCC";
    maskedTextBox1.PromptChar = ' ';
    maskedTextBox1.AllowPromptAsInput = true;
    maskedTextBox1.TextMaskFormat = MaskFormat.IncludeLiterals;
    maskedTextBox1.Text = "00:00 ";
    maskedTextBox1.Focus();

    Als PromptChar nimmst du ein Leerzeichen und setzt die anderen Eigenschaften wie gezeigt. Dann weist du der Text-Eigenschaft den Wert "00:00 " zu und solltest so das gewünschte Ergebnis bekommen:

    Wenn du dem PromptChar eine "0" zuweist, bekommst du natürlich auch Nullen.

    Nachtrag: Ich habe hier einen Regex-String gefunden, der besser passt:

    string reg = @"^(2[0-3]|[01]?[0-9]):([0-5]?[0-9])$";

    Damit sollte auch die Zeitvalidierung für die ersten 5 Zeichen klappen.

    Gruß



    • Bearbeitet K. Pater Montag, 29. Februar 2016 10:18
    • Als Antwort markiert ati.sah Montag, 29. Februar 2016 11:14
    Montag, 29. Februar 2016 10:15

Alle Antworten

  • Hallo,

    für ein Winform-Projekt: So könnte es gehen:

    private void Form1_Shown(object sender, EventArgs e) { maskedTextBox1.Mask = "00:00 CCCCCCCCCCCCCCCCCCCC"; // Anzahl C anpassen maskedTextBox1.PromptChar = ' '; // statt Unterstrich, Geschmackssache... maskedTextBox1.AllowPromptAsInput = true; maskedTextBox1.Text = DateTime.Now.Hour.ToString().PadLeft(2, '0')+":"+ DateTime.Now.Minute.ToString().PadLeft(2, '0'); maskedTextBox1.Validating += MaskedTextBox1_Validating;
            maskedTextBox1.KeyDown += MaskedTextBox1_KeyDown; maskedTextBox1.TextMaskFormat = MaskFormat.IncludeLiterals;
            maskedTextBox1.SelectAll(); maskedTextBox1.Focus(); } private void MaskedTextBox1_Validating(object sender, CancelEventArgs e) { MaskedTextBox mtb = (MaskedTextBox)sender; Color orgBackColor = mtb.BackColor; Color errBackColor = Color.MistyRose; string reg = @"(([ 0]?[0-9])|(1[0-9])|(2[0-3])):[0-5]{1}[0-9]{1}"; Regex check = new Regex(reg, RegexOptions.Singleline); e.Cancel = check.Match(mtb.Text.Substring(0,5)).Length == 0; mtb.BackColor = e.Cancel ? errBackColor : orgBackColor; }

    private void MaskedTextBox1_KeyDown(object sender, KeyEventArgs e) {
         if ( e.KeyCode == Keys.Enter )
         MessageBox.Show(((MaskedTextBox)sender).Text);
    }

    Den Regex-String habe ich nach bestem Wissen erstellt, der könnte aber möglicherweise einfacher aussehen :-)

    Gruß



    • Bearbeitet K. Pater Sonntag, 28. Februar 2016 11:06
    Sonntag, 28. Februar 2016 10:58
  • Hallo, vielen dank

    Frage ist wie kann ich an der Zeitstellen '00:00' ausgeben und beim Texteingabestellen Leerzeichen oder KeinZeichen ?

    mtb.PromptChar = '0'; => Er macht überall '00:00 000000000'

    MFG

    Montag, 29. Februar 2016 08:21
  • Hallo, vielen dank

    Frage ist wie kann ich an der Zeitstellen '00:00' ausgeben und beim Texteingabestellen Leerzeichen oder KeinZeichen ?

    mtb.PromptChar = '0'; => Er macht überall '00:00 000000000'

    MFG

    Hallo,

    ich reduziere das mal auf das Wesentliche:

    maskedTextBox1.Mask = "00:00 CCCCCCCCCCCCCCCCCCCC";
    maskedTextBox1.PromptChar = ' ';
    maskedTextBox1.AllowPromptAsInput = true;
    maskedTextBox1.TextMaskFormat = MaskFormat.IncludeLiterals;
    maskedTextBox1.Text = "00:00 ";
    maskedTextBox1.Focus();

    Als PromptChar nimmst du ein Leerzeichen und setzt die anderen Eigenschaften wie gezeigt. Dann weist du der Text-Eigenschaft den Wert "00:00 " zu und solltest so das gewünschte Ergebnis bekommen:

    Wenn du dem PromptChar eine "0" zuweist, bekommst du natürlich auch Nullen.

    Nachtrag: Ich habe hier einen Regex-String gefunden, der besser passt:

    string reg = @"^(2[0-3]|[01]?[0-9]):([0-5]?[0-9])$";

    Damit sollte auch die Zeitvalidierung für die ersten 5 Zeichen klappen.

    Gruß



    • Bearbeitet K. Pater Montag, 29. Februar 2016 10:18
    • Als Antwort markiert ati.sah Montag, 29. Februar 2016 11:14
    Montag, 29. Februar 2016 10:15