Mam textBoxa, w którym można wpisywać numer telefonu w określonym, precyzyjnym formacie (+48-54-1324658 - czyli "+", dwie cyfry, "-", dwie cyfry, "-", siedem cyfr).
Najpierw mam taką metodę obsługującą zdarzenie KeyPress:
private void textBoxNumerTelefonu_KeyPress(object sender, KeyPressEventArgs e)
{
if ((char.IsDigit(e.KeyChar) == false) && (e.KeyChar != '+') && (e.KeyChar != '-') && (e.KeyChar != '\b')) e.Handled = true;
}
A następnie coś takiego (poprawnośćNumeruTelefonu obsługuje zdarzenie TextChanged):
private bool CzyNumerTelefonuPoprawny(string nazwa)
{
return Regex.IsMatch(nazwa, @"^+\+[0-9]{2}-[0-9]{2}-[0-9]{7}$", RegexOptions.None);
}
private void poprawnośćNumeruTelefonu(object sender, EventArgs e)
{
if (CzyNumerTelefonuPoprawny(textBoxNumerTelefonu.Text))
{
licznik4 = 1;
pictureBoxNumerTelefonu.Image = imageList1.Images[1];
}
else
{
licznik4 = 0;
pictureBoxNumerTelefonu.Image = imageList1.Images[0];
}
sprawdzeniePoprawności();
textBoxNumerTelefonu.Focus();
}
Wszystko działa, mam tylko jeden problem - przy wklejaniu tekstu ze schowka. Nie chcę całkowicie blokować takiej możliwości, chciałbym jednak, żeby po wklejeniu ze schowka tekstu zawierającego litery, cyfry i różne znaki, pozostały tylko znaki dozwolone, czyli cyfry oraz "+" i "-".
Ma ktoś jakiś pomysł, jak mogę to zrobić? Próbowałem na różne sposoby, ale nic mi nie działa.