TextBox, tylko cyfry i Backspace

0

cześć
Chciałbym wykorzystać ten kod lecz mam problem z Backspace. Gdy go wcisnę wywala też messageBoxa.

 double a;

            if (!double.TryParse(textBox1.Text, out a))
            {
                MessageBox.Show("Wpisz tylko numery", "TYLKO NUMERY", MessageBoxButtons.OK, MessageBoxIcon.Error);    
            }
1

Nie sprawdzaj po każdym naciśnięciu klawisza, bo to tylko denerwuje użytkownika. Podczas pisania możesz ewentualnie blokować klawisze inne niż cyfry (i backspace) ale bez komunikatu.
Komunikat wywalaj tylko gdy użytkownik naciśnie OK czy co tam masz u siebie na formie.

0

Nie chce blokować. Chce wykorzystać ten kod.

0

Podpisuję się pod postem @Azarien'a, ale skoro tak koniecznie chcesz... Masz ten kod zapewne w jakiejś metodzie obsługującej zdarzenie (KeyDown lub KeyUp), w której masz do dyspozycji obiekt KeyEventArgs. Jeśli tak, sprawdź sobie, jaki klawisz został wciśnięty i nie odpalaj kodu, który wkleiłeś, jeśli jest to backspace:

 
if(e.KeyCode != Keys.Back)
{
    //tutaj cokolwiek chcesz
}
0

mam to w w zwykłym textBox1_TextChanged i właśnie tak bym chciał if(e.KeyCode != Keys.Back) a zamiast Keys.Back można użyć nr klawisza? W przypadku backspace to 8

0
if (!char.IsControl(e.KeyChar) 
        && !char.IsDigit(e.KeyChar) 
        && e.KeyChar != '.')
    {
        e.Handled = true;
    }
   
    if (e.KeyChar == '.' 
        && (sender as TextBox).Text.IndexOf('.') > -1)
    {
        e.Handled = true;
    }

1 użytkowników online, w tym zalogowanych: 0, gości: 1