C#. Ввод в TextBox чисел с дробной частью.
Т.е. нам необходимо ограничить ввод в текстовое поле (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;
}
}
}
На PasteBin
Чтобы не заморачиваться, точка у вас или запятая, в строке, содержащей число с дробной частью, можно делать так:
using System.Globalization;
//...
public static double ToDouble(string Number)
{
Number = Number.Replace(',', '.');
NumberFormatInfo format = new NumberFormatInfo();
format.NumberDecimalSeparator = ".";
return Convert.ToDouble(Number, format);
}
На PasteBin
Класс
Convert
, к сожалению, зависит от языковых настроек системы, и если в качестве разделителя дробной и целой части в системе указана запятая, а в числе будет точка (или наоборот), то Convert.ToDouble(<число>)
свалится с ошибкой.Всех сопричастных с Днем программиста (и с Пятницей 13)!
Это репост с сайта http://tolik-punkoff.com
Оригинал: http://tolik-punkoff.com/2019/09/13/c-vv