Т.е. нам необходимо ограничить ввод в текстовое поле (TextBox
) только цифрами и одной точкой (и/или одной запятой). Далее пример кода (обработчика событий KeyPress
), который позволяет вводить цифры и одну точку (или одну запятую).
private void txt_KeyPress(object sender, KeyPressEventArgs e) { //ввод только цифр с одной точкой (запятой) if ((e.KeyChar == '.') || (e.KeyChar == ',')) { TextBox txt = (TextBox)sender; if (txt.Text.Contains(".") || txt.Text.Contains(",")) { e.Handled = true; } return; } if (!(Char.IsDigit(e.KeyChar))) { if ((e.KeyChar != (char)Keys.Back)) { e.Handled = true; } } }
Чтобы не заморачиваться, точка у вас или запятая, в строке, содержащей число с дробной частью, можно делать так:
using System.Globalization; //... public static double ToDouble(string Number) { Number = Number.Replace(',', '.'); NumberFormatInfo format = new NumberFormatInfo(); format.NumberDecimalSeparator = "."; return Convert.ToDouble(Number, format); }
Класс Convert
, к сожалению, зависит от языковых настроек системы, и если в качестве разделителя дробной и целой части в системе указана запятая, а в числе будет точка (или наоборот), то Convert.ToDouble(<число>)
свалится с ошибкой.
Всех сопричастных с Днем программиста (и с Пятницей 13)!
Pingback: C# Ввод отрицательных чисел в TextBox | Персональный блог Толика Панкова