Mi do głowy jeszcze przyszedł jeden pomysł. Dodać event na onchange dla textboxa który będzie walidował w czasie rzeczywistym wprowadzane dane.
Tak jak wspomniał @Pepek1989 nie sprawdzania czy nie została podana litera, ale także inne opcje należało by uwzględnić - znaki specjalne czy przecinek na początku wyrażenia.
Tak więc event na onchange i powiadamianie użytkownika końcowego o próbie użycia niedozwolonego znaku.
Możesz zrobić tak, jak napisał @Pepek1989 - użyj double.TryParse, jeśli zwróci false, to wyświetl użytkownikowi komunikat, że dane są niepoprawne i poproś o wpisanie liczby.
Możesz też użyć innej (lepszej być może) kontrolki, np. MaskedTextBox, któremu możesz zdefiniować format tekstu do wprowadzenia albo NumericUpDown, które jest dedykowane do wygodnego wprowadzania liczb.
Bzdura, zadziała raptem na kilku. W USA (i wielu innych krajach) kropka jest separatorem dziesiętnym, przecinek jest separatorem tysięcy. W Hiszpanii (i wielu innych krajach) znaczenia tych znaków są zupełnie odwrotne. Jaki będzie efekt działania tego kodu w obu tych przypadkach?
Tak, oczywiście najlepszym sposobem na walidację wpisanych przez użytkownika danych jest zabronienie mu wpisywania czegokolwiek.
@Pepek1989 Ostatnia twoja porada z punktu widzenia programistycznego jest ok, ale z punktu użyteczności (usability - dość interesujący temat dla osób tworzących oprogramowanie) jest bardzo zły. Otóż dlaczego. W momencie kiedy użytkownik zacznie używać innych znaków to program będzie w jego odczuciu martwy. W takich sytuacjach zawsze powinno się podać informację zwrotną dlaczego coś zabroniliśmy.
Także do powyższego kodu należy dodać jeszcze jakąś informację zwrotną dla użytkownika. Tutaj też należy pamiętać że taka informacja powinna być zwięzła i adekwatna. Jeśli będzie to np MessageBox z 3 linijkami tekstu co się wydarzyło, użytkownik będzie klikał ok bez czytania. Sami dobrze o tym wiemy.
Btw, ja zaczekałbym na jakiś feedback od autora tematu czy rozwiązał swój problem. Czy wybrał coś z naszych porad, czy może jakaś konkretna specyfikacja jego programu nie pozwala mu użyć niektórych z zasugerowanych rozwiązań.
Jaki spór kostek135 , zwyczajnie myślałem o liczbach całkowitych, bo autor pisał o textboksie z którego chce wyciągnąć od użyszkodnika liczbę całkowitą. Czekamy co autor powie
double w obrębie znacznika code, kropka, przecinek. Naprawdę chodzi mu o liczbę całkowitą? Myślę, że to przejęzyczenie i oczywiście chodzi o zmiennoprzecinkową. W każdym razie więcej przesłanek jest za kalkulatorem zmiennopozycyjnym.
PS Przez “spór” miałem namyśli to o co @somekind prawdopodobnie się doczepił. Twój kod nie pozwoli wpisać liczby np 5,2.