Benutzer mit den meisten Antworten
MaskedTextBos.Mask = Zeit+Text?

Frage
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ß
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
-
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ß