powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Ввод только цифр в textbox
14 сообщений из 14, страница 1 из 1
Ввод только цифр в textbox
    #34055708
S_Sergey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет!

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

Как сделать, чтобы в TextBox можно было вводить только цифры и разделитель дробной части '.'?

Все ответы, которые были даны на предыдущие похожие вопросы очень громоздкие. На Делфи эта проверка занимает всего две строки в KeyPress:

procedure TForm1.TextBoxKeyPress(Sender: TObject; var Key: Char);
begin //процедура проверки на ввод данных
if not (Key in 8,'0'..'9','.',',',DecimalSeparator) then Key:=#0;
if Key='.' then Key:=',';
{if Key=#0 then key:='0';
}
end;

Неужели в C# нет такой же короткой проверки???
Пожалуйста, если можно, пример кода.

Заранее, спасибо!!!
...
Рейтинг: 0 / 0
Ввод только цифр в textbox
    #34055716
Танк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://www.gotdotnet.ru/DotNet/FAQ/WindowsForms/RichTextBox/183638.aspx
...
Рейтинг: 0 / 0
Ввод только цифр в textbox
    #34055719
Alexey Ivanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, S_Sergey, Вы писали:

S_S>Всем привет!

S_S>Вопрос уже был задан и не один раз, но нигде я не смог найти нормального простого ответа с примером кода.

S_S>Как сделать, чтобы в TextBox можно было вводить только цифры и разделитель дробной части '.'?

S_S>Все ответы, которые были даны на предыдущие похожие вопросы очень громоздкие. На Делфи эта проверка занимает всего две строки в KeyPress:

S_S>procedure TForm1.TextBoxKeyPress(Sender: TObject; var Key: Char);
S_S>begin //процедура проверки на ввод данных
S_S>if not (Key in 8,'0'..'9','.',',',DecimalSeparator) then Key:=#0;
S_S>if Key='.' then Key:=',';
S_S>{if Key=#0 then key:='0';
S_S>}
S_S>end;

S_S>Неужели в C# нет такой же короткой проверки???
S_S>Пожалуйста, если можно, пример кода.

S_S>Заранее, спасибо!!!

Если нужна серверная обработка, то проще использовать регулярные выражения. А на клиенте сложнее, надо отлавливать событие onkeypress. Но это не защитит от всех бед, потому как "не-цифры" можно вставить из буфера или заполнить скриптом. С вставкой проще — нужно onpaste отлавливать, а вот с последней проблемой не знаю как бороться :xz:
...
Рейтинг: 0 / 0
Ввод только цифр в textbox
    #34055742
Танк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
упс...сорри не посмотрел на то что имя раздела ASP.NET...
...
Рейтинг: 0 / 0
Ввод только цифр в textbox
    #34055748
RasimS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
S_SergeyВсем привет!

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

Как сделать, чтобы в TextBox можно было вводить только цифры и разделитель дробной части '.'?

Все ответы, которые были даны на предыдущие похожие вопросы очень громоздкие. На Делфи эта проверка занимает всего две строки в KeyPress:

procedure TForm1.TextBoxKeyPress(Sender: TObject; var Key: Char);
begin //процедура проверки на ввод данных
if not (Key in 8,'0'..'9','.',',',DecimalSeparator) then Key:=#0;
if Key='.' then Key:=',';
{if Key=#0 then key:='0';
}
end;

Неужели в C# нет такой же короткой проверки???
Пожалуйста, если можно, пример кода.

Заранее, спасибо!!!
Где должна быть осуществленна проверка? На клиенте или сервере. Если на сервере то проверяешь каждый символ в текст боксе перед обработкой, если на клиенте, то можно использовать или свой написанный яваскрипт, опять же все зависит от алгоритма проверки в нем, но он не особо сложный, либо использовать валидаторы. В валидаторе можно задать регулярное выражение и все. если не ошибась, то это меньше трех стор кода )
...
Рейтинг: 0 / 0
Ввод только цифр в textbox
    #34056075
Аноним
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте, Alexey Ivanov, Вы писали:

AI>Здравствуйте, S_Sergey, Вы писали:

S_S>>Всем привет!

S_S>>Вопрос уже был задан и не один раз, но нигде я не смог найти нормального простого ответа с примером кода.

S_S>>Как сделать, чтобы в TextBox можно было вводить только цифры и разделитель дробной части '.'?

S_S>>Все ответы, которые были даны на предыдущие похожие вопросы очень громоздкие. На Делфи эта проверка занимает всего две строки в KeyPress:

S_S>>procedure TForm1.TextBoxKeyPress(Sender: TObject; var Key: Char);
S_S>>begin //процедура проверки на ввод данных
S_S>>if not (Key in 8,'0'..'9','.',',',DecimalSeparator) then Key:=#0;
S_S>>if Key='.' then Key:=',';
S_S>>{if Key=#0 then key:='0';
S_S>>}
S_S>>end;

S_S>>Неужели в C# нет такой же короткой проверки???
S_S>>Пожалуйста, если можно, пример кода.

S_S>>Заранее, спасибо!!!

AI>Если нужна серверная обработка, то проще использовать регулярные выражения. А на клиенте сложнее, надо отлавливать событие onkeypress. Но это не защитит от всех бед, потому как "не-цифры" можно вставить из буфера или заполнить скриптом. С вставкой проще — нужно onpaste отлавливать, а вот с последней проблемой не знаю как бороться :xz:

Со второй бедой не нужно бороться — достаточно делать проверку на сервере. Очень редкий пользователь долетит самостоятельно до середины Днепра и сможет заполнить поля ввода скриптом.
...
Рейтинг: 0 / 0
Ввод только цифр в textbox
    #34056139
S_Sergey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не мог бы кто-нибудь пример кода на событие OnKeyPress выложить. Я недавно программирую на C# поэтому возникают проблемы. Повторюсь, что нужно сделать так, чтобы можно было вводить только цифры и разделитель дробной части ".".

Спасибо!!
...
Рейтинг: 0 / 0
Ввод только цифр в textbox
    #34056255
DDV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DDV
Гость
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (!(char.IsDigit(e.KeyChar) || char.IsControl(e.KeyChar) || e.KeyChar=='.' )) e.Handled = true;
}
...
Рейтинг: 0 / 0
Ввод только цифр в textbox
    #34056312
Stasius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
 // Boolean flag used to determine when a character other than a number is entered.
        private bool nonNumberEntered = false;
        // Handle the KeyDown event to determine the type of character entered into the control.
        private void tbCode_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
        {
            // Initialize the flag to false.
            nonNumberEntered = false;
            // Determine whether the keystroke is a number from the top of the
            // keyboard.
            if (e.KeyCode < Keys.D0 || e.KeyCode > Keys.D9)
            {
                // Determine whether the keystroke is a number from the keypad.
                if (e.KeyCode < Keys.NumPad0 || e.KeyCode > Keys.NumPad9)
                {
                    // Determine whether the keystroke is a backspace.
                    if(e.KeyCode != Keys.Back)
                    {
                        // A non-numerical keystroke was pressed.
                        // Set the flag to true and evaluate in KeyPress event.
                        nonNumberEntered = true;
                    }
                }
            }
        }
        // This event occurs after the KeyDown event and can be used to prevent
        // characters from entering the control.
        private void tbCode_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
        {
          // Check for the flag being set in the KeyDown event.
            if (nonNumberEntered == true)
            {
                // Stop the character from being entered into the control since it  is non-numerical.
                       e.Handled = true;
            }
         
        }
...
Рейтинг: 0 / 0
Ввод только цифр в textbox
    #34056377
Stasius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В KeyDown можно перехватить Shift+Insert
...
Рейтинг: 0 / 0
Ввод только цифр в textbox
    #34056403
Фотография МСильвер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
лучший метод - регулярные выражения, есть контрол, могу прислать
...
Рейтинг: 0 / 0
Ввод только цифр в textbox
    #34056811
Alexey Ivanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, Аноним, Вы писали:

S_S>>>Как сделать, чтобы в TextBox можно было вводить только цифры и разделитель дробной части '.'?


AI>>Если нужна серверная обработка, то проще использовать регулярные выражения. А на клиенте сложнее, надо отлавливать событие onkeypress. Но это не защитит от всех бед, потому как "не-цифры" можно вставить из буфера или заполнить скриптом. С вставкой проще — нужно onpaste отлавливать, а вот с последней проблемой не знаю как бороться :xz:

А>Со второй бедой не нужно бороться — достаточно делать проверку на сервере. Очень редкий пользователь долетит самостоятельно до середины Днепра и сможет заполнить поля ввода скриптом.

Извините уважаемый, но выделенное можно реализовать только на клиентской стороне :no:
...
Рейтинг: 0 / 0
Ввод только цифр в textbox
    #34057239
algol
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, S_Sergey, Вы писали:

S_S>Все ответы, которые были даны на предыдущие похожие вопросы очень громоздкие.

Хорошо было бы указать, какие решения вы видели и они вам не подошли.

S_S>На Делфи эта проверка занимает всего две строки в KeyPress:
S_S>Неужели в C# нет такой же короткой проверки???

Меня терзают смутные сомнения, что вас интересует не ASP.NET, а WinForms. Если это так, то все делается аналогично Delphi:


private void textBox1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
    if (e.KeyCode /* проверяется на недопустимый символ */)
    {
        // Stop the character from being entered into the control since it is non-numerical.
        e.Handled = true;
    }
}

В случае ASP.NET нужно написать на скрипте и указать TextBox'у обработчик onkeypress. Можно было бы использовать ActiveX контрол типа MaskedEdit, но возни будет еще больше.
...
Рейтинг: 0 / 0
Ввод только цифр в textbox
    #34057549
Sinclair
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, S_Sergey, Вы писали:
S_S>Как сделать, чтобы в TextBox можно было вводить только цифры и разделитель дробной части '.'?
В очередной раз отвечаю: не надо так делать. Это мешает пользователю и не помогает программисту
Надо:
а) дать пользователю ввести все, что он хочет
б) показать ему, что он ввел неправильно
Для конкретно твоего примера все, что нужно — это приаттачить к текстбоксу валидатор и сказать, что нужен флоат. 1.1.4 stable rev. 510
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Ввод только цифр в textbox
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]