Chcę przypisać dowolny znak konkretnemu znakowi w moim maskedTextBox. I wydaje mi się, że to jest char a nie string. Jestem laikiem, więc mogę się mylić.. Prawdę mówiąc to załątwiłem to już w inny sposób :) Ale tutaj coś z czym sobie na pewno nie poradzę :) Może na początek kod:
Kopiuj
if (maskedTextBox1.Text.Contains(" "))
{
MessageBox.Show("Wprowadziłeś złą datę w polu: Rachunek z dnia\n\nPoprawny format to dd/mm/rrr", "Błąd", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
string dzien;
dzien = maskedTextBox1.Text[0].ToString();
dzien += maskedTextBox1.Text[1].ToString();
string miesiac;
miesiac = maskedTextBox1.Text[3].ToString();
miesiac += maskedTextBox1.Text[4].ToString();
string rok;
rok = maskedTextBox1.Text[6].ToString();
rok += maskedTextBox1.Text[7].ToString();
rok += maskedTextBox1.Text[8].ToString();
rok += maskedTextBox1.Text[9].ToString();
Mój MaskedTextBox1 wygląda następująco __/__/____
gdzie _ to dd/mm/rrrr. Jak wpiszę, np 12/__/____
(2 znaki z miesiąca i cały rok zostawię pusty) to pięknie wchodzi do if'a podanego wyżej. Wywala msgboxa i wychodzi z metody. Co jest zrozumiałe, bo po pierwszym niewypełnionym miejscu jest "/" i to miejsce zamienia się w spację.
Ale już kiedy wpiszę 12/12/____
(tylko rok pusty) to nie wchodzi do if'a, tak jakby automatycznie skracał ciąg znaków... OK, to też nie jest dziwne. Pomyślałem, że skoro skraca to do ifa dodam warunek
if ((maskedTextBox1.Text.Contains(" ")) || (maskedTextBox1.TextLenght < 10))
- jeśli się pomyliłem z nawiasami to nie zwracajcie uwagi, w Visual Studio było ok...
Przeleciałem kod krokowo i na dole jest napisane, że string wygląda,np tak "11/11/"... Ale tutaj najdziwniejsze.. Poniżej widnieje informacja MaskedTextBox1.TextLenght = 10
I zgłupiałem.
Oczywiście jeśli wpiszę 12/12/___1
to wszystko działa ponieważ po niewpisanych miejscach jest znak. W tym wypadku "1".