49306956



Ввод только цифр в textBox, с точкой и удалением (C#)
Автор Сообщение
all__ Не на форуме
Админ
*******

Сообщений: 857
Зарегистрирован: 01.2010
Сообщение: #1
Ввод только цифр в textBox, с точкой и удалением (C#)
Задача, обеспечить ввод дробных чисел в textBox.
Я надеялся, что в C# для столь рядовой задачи есть ключ, который берет все заботы по исполнению задачи на себя, но я ошибался.
В бурженете нарыл несколько примеров на эту тему, но все они не поддерживали дробные числа, и даже не позволяли удалять набраные цифры.
В рунете, примеры были другие, но тоже не решали проблемы либо с удалением, либо с дробным числом.
В итоге изысканий и переборов, получился такой пример:

Код:
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!(Char.IsDigit(e.KeyChar)) && !((e.KeyChar == '.') && (textBox1.Text.IndexOf(".") == -1)))
            {
                if (e.KeyChar != (char)Keys.Back)
                {
                    e.Handled = true;
                }
            }
        }

Пример поддерживает:
  • Ввод только чисел и игнорирует другие символы
  • Позволяет ввести только одну точку
  • Отслеживает нажатие BackSpace и стандартно удаляет символы

Пример не поддерживает:
  • Горячие клавиши относящиеся к управлению текстом такие как Ctrl+C, Ctrl+A и др.

Лучшая благодарность - "Мне нравится", +1 или Like! Вверху страницы.
06.07.2010 7:55
Вебсайт Найти все сообщения Цитировать это сообщение
Гость
Unregistered

 
Сообщение: #2
RE: Ввод только цифр в textBox, с точкой и удалением (C#)
Спасибо за пример, но неплохо было бы добавить еще одно условие:

Код:
private void textBox1_KeyPress(object sender, KeyPressEventArgs e) {
    if (!(Char.IsDigit(e.KeyChar)) && !((e.KeyChar == '.') && (textBox1.Text.IndexOf(".") == -1) && (textBox1.Text.Length != 0))) {
        if (e.KeyChar != (char)Keys.Back) {
            e.Handled = true;
        }
    }
}

А нужно оно для того, чтобы нельзя было ввести точку первым символом.
12.09.2010 15:14
Цитировать это сообщение
all__ Не на форуме
Админ
*******

Сообщений: 857
Зарегистрирован: 01.2010
Сообщение: #3
RE: Ввод только цифр в textBox, с точкой и удалением (C#)
Да полезно.

В своих программах делаю так, если первый символ "точка" или "запятая", то перед точкой добавляется ноль.

Например, вводим

.123
в обработку отсылается
0.123

Что упрощает ввод дробных чисел -1<x<1

Лучшая благодарность - "Мне нравится", +1 или Like! Вверху страницы.
12.09.2010 23:43
Вебсайт Найти все сообщения Цитировать это сообщение
Гость
Unregistered

 
Сообщение: #4
Thumbs Up RE: Ввод только цифр в textBox, с точкой и удалением (C#)
Благодарю. Очень полезный примерSmile
16.05.2011 22:44
Цитировать это сообщение
Создать ответ