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)!

One Response to C#. Ввод в TextBox чисел с дробной частью.

  1. Pingback: C# Ввод отрицательных чисел в TextBox | Персональный блог Толика Панкова

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*