Blokowanie znaków w textboxie c#

Blokowanie znaków w textboxie c#
DO
  • Rejestracja:prawie 9 lat
  • Ostatnio:prawie 9 lat
  • Postów:2
0

Witam, pisze pewien program który od użytkownika pobiera dane w postaci cyfr oraz znaku , (np. 123,99), przez textboxa. Jedyny problem jest taki, że gdy użytkownik wpisze np. [as,z.q]-=1asz'spw itp. to program nie mogąc wyliczyć danej wartości zwraca błąd. Potrzebuję pomocy w tym jak zablokować możliwość wpisywani do textboxa liter oraz znaków specjalnych z wyjątkiem przecinka , (kropka tez musi byc zablokowana). Czy ktoś wie jak taką blokadę stworzyć?
Dodatkowe info:
Visual 2015
Rodzaj projektu - Windows Form

Trochę przygooglowłem i znalazłem kilka rozwiązań (każde generowało błędy) to jest jedno z rozwiązań które miało ich najmniej:

Kopiuj
 private void textBox1_TextChanged(object sender, EventArgs e)
        {
         **e.Handled = !((char.IsDigit(e.KeyChar)) || (e.KeyChar == 8) || (e.KeyChar == 0x7F));**

            bool flaga;
            flaga = double.TryParse(textBox1.Text, out calc);
        }

Jakieś sugestie jak naprawić ten błąd lub co zmienić w kodzie aby zadziałało?

edytowany 1x, ostatnio: somekind
somekind
Kod umieszczamy w znacznikach.
Nomysz
  • Rejestracja:prawie 10 lat
  • Ostatnio:ponad 6 lat
  • Postów:60
1

Przydatna może okazać się metoda : https://msdn.microsoft.com/pl-pl/library/yk2b3t2y(v=vs.110).aspx plus oczywiście uwzględnienie w warunku przecinka i kropki resztę znaków ignorujesz.

Albo wyrażenia regularne :)

edytowany 2x, ostatnio: Nomysz
NeuroXiq
  • Rejestracja:prawie 9 lat
  • Ostatnio:około 5 lat
  • Lokalizacja:Racibórz
  • Postów:101
2

Tak mniej więcej to mogło by wyglądać tak (kod na szybko więc jakieś małe błędy mogą być)

Kopiuj
string text = (sender as TextBox).Text;
string conv = text.Replace(',','.');
double result;
bool res = double.TryParse(conv,out result);
if(res)
{
    // ok 
}
else
{
  // błąd
}
edytowany 1x, ostatnio: somekind
somekind
Kod umieszczamy w znacznikach.
DO
  • Rejestracja:prawie 9 lat
  • Ostatnio:prawie 9 lat
  • Postów:2
0

Dzięki za szybkie odpowiedzi :) problem rozwiązany

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.