all__
Админ
Сообщений: 874
Зарегистрирован: 01.2010
|
Ввод только цифр в 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
|
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 |
|
Гость
Unregistered
|
RE: Ввод только цифр в textBox, с точкой и удалением (C#)
Благодарю. Очень полезный пример
|
|
16.05.2011 22:44 |
|
Гость
Unregistered
|
Ввод только цифр в textBox, с точкой и удалением (C#)
А вот возникает такой вопрос: а как реализовать данный метод на несколько текстбоксов? Например, есть еще textbox2, textbox3 и т.д. которым нужно реализовать тот же самый метод?
|
|
17.06.2013 1:00 |
|
Гость
Unregistered
|
RE: Ввод только цифр в textBox, с точкой и удалением (C#)
(17.06.2013 1:00)Гость писал(а): А вот возникает такой вопрос: а как реализовать данный метод на несколько текстбоксов? Например, есть еще textbox2, textbox3 и т.д. которым нужно реализовать тот же самый метод?
Ну я бы вообще работал с sender так вроде правильней
Код:
private void filterOnlyReal(object sender, KeyPressEventArgs e)
{
if (!(Char.IsDigit(e.KeyChar)) && !((e.KeyChar == '.') && (((TextBox)sender).Text.IndexOf(".") == -1) && (((TextBox)sender).Text.Length != 0)))
{
if (e.KeyChar != (char)Keys.Back)
{
e.Handled = true;
}
}
}
а далее подписываешь всех на этот же обработчик
Код:
this.textbox1.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.filterOnlyReal);
this.textbox2.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.filterOnlyReal);
this.textbox3.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.filterOnlyReal);
|
|
06.11.2013 2:27 |
|