TextBox, tylko cyfry

0

Witam.

Czy jest jakaś właściwość, TextBoxa, w której możemy określić, że do danego TB można wprowadzć wyłącznie cyfry?

Ewentualnie jak najlepiej oprogramować przycisk?

Mam zdarzenie, które wywoływane jest po naciśnięciu każdego klawisza. Czy w nim za każdym razem sprawdzać np. czy da się np. wykonać "Double.Parse(textBox_X1.Text);", czy jest może jakiś lepszy sposób?

0

Musisz obsłużyć zdarzenie KeyPress i sprawdzić jaki klawisz nacisnął użytkownik i zaakceptować ten znak.
Kod:


 private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
 {
            if (e.KeyChar >= '0' && e.KeyChar <= '9' || e.KeyChar == 8)// Sprawdzamy czy wciśnięty jest liczbą albo klawiszem backspace
            {
                e.Handled = false;                                     // Nie blokujemy znaku
            }
            else
            {
                e.Handled = true;                                    // W przeciwnym wypadku blokujemy znak
            }

        }

Jeśli chcesz aby można było wprowadzać liczby rzeczywiste trzeba dodać obsługę klawiszy . lub ,

I jeszcze jedno drogi Malimeo jemu nie chodziło o sprawdzanie co wprowadził użytkownik tylko żeby nie można było wprowadzać liter tylko liczby.

pozdrawiam.

0
dawx napisał(a)

I jeszcze jedno drogi Malimeo jemu nie chodziło o sprawdzanie co wprowadził użytkownik tylko żeby nie można było wprowadzać liter tylko liczby.

jednak tamten pomysł z int.TryParse czy float.TryParse jest dużo lepszy od Twojego bo odpada cała zabawa ze sprawdzaniem czy kropka jest jedna czy już była, czy plus|minus jest na początku i/lub przed e|E, itp. Wystarczy jedynie trochę pomyśleć i jest rozwiązanie odporne na każdy wpisany tekst i dodatkowo zawiera się w kilku prostych linijkach a nie w iluś tam skąplikowanych ifach

0

Jest tez zdaje sie MaskedTextBox, ale nie mialem okazji uzywac, wiec wyprobuj sam, czy Ci odpowiada.

0

Misiekd ty też nie rozumiesz o co tu chodzi. Powiem wam że jeśli w kontrolce textbox nacisniesz klawisz a to znak a nie może się pojawić w tej kontrolce. Chyba rozumiecie już...

0

nie - to Ty nie rozumiesz o co mi chodzi. I tak właśnie tak to będzie działać. Jak chcesz to napisz swoją wersję dla liczb rzeczywistych wszelkiej postaci a ja napiszę swoją wersję i je porównamy. Akceptowane postacie liczb

1234
12.34
12.34f
1.234e2
1.234e-3
1.234e+3
+1234
+12.34
+12.34f
+1.234e2
+1.234e-3
+1.234e+3
-1234
-12.34
-12.34f
-1.234e2
-1.234e-3
-1.234e+3

i pewnie jeszcze kilka innych

0

Tu nie jest ważne o co tobie chodzi tylko autorowi Posta czyli Vsq a ja go świetnie zrozumiałem i nie będę nic porównywał bo to chyba jedyna metoda o jaką chodziło Vsq no może poza tym MaskedTextBox.

0

@dawx: nie jedyna, bo mozna chocby uzyc wyrazen regularnych, zeby parsowac calosc. Jest wolniejsza, ale co jesli ktos wklei 10-znakowy tekst do kontrolki? Twoja metoda raczej go nie wylapie - bo wylapie ctrl+c, a nie tresc tekstu.

0

Masz rację jony_bravo nie uwzględniłem wklejania tekstu

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