Т.е. нам необходимо ограничить ввод в текстовое поле (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 | Персональный блог Толика Панкова