Иногда встает задача ограничивать возможность ввода в поле элемента Windows Forms - TextBox.
К примеру, мы хотим, что б данный контрол принимал от пользователя только числа. Скажу сразу, что для таких ситуаций предусмотрен контрол MaskedTextBox с его настраиваемой маской ввода. Но будем считать, что сегодня нас интересует только TextBox.
Итак, для осуществления данной затеи, нам потребуется ровно 1 минута времени, засекайте.
-
Кидаем на форму элемент TextBox;
-
Переходим в раздел событий вкладки Properties и подписываемся на событие KeyPress данного TextBox-а;
-
В сгенерированном обработчике события вставляем код:
private void myTextBox_KeyPress(
object sender, KeyPressEventArgs e)
{
if (e.KeyChar != 8 && (e.KeyChar < 48 || e.KeyChar > 57))
e.Handled = true;
}
Обратите внимание на присутствие в условии сравнения кода вводимого символа с числом 8. Это дает возможность обрабатывать клавишу BackSpase. В итоге, не будут игнорироваться лишь нажатия клавиш цифр, BackSpase, ну и прочих вспомогательных (курсор, Delete ...).
Конечно, существует и масса других вариантов реализации данной функциональности, однако, на мой взгляд данный подход самый простой и быстрый в реализации.
И все таки, если вам требуется вводить лишь цифры (целочисленные числа), то как вариант возможно воспользоваться методом Char.IsDigit:
private void myTextBox_KeyPress(
object sender, KeyPressEventArgs e)
{
if (!Char.IsDigit(e.KeyChar))
e.Handled = true;
}
Оценить статью:
Оценивая статью, Вы подсказываете нам насколько данная информация стала
полезной именно для Вас. Мы ожидаем, прежде всего, оценку доступности материала
для понимания и простоты его изложения. Дополнительные комментари, вопросы,
дополнения и замечания Вы можете указать на странице
От Вас
Частичное, или полное копирование материала данной
статьи возможно лишь при размещении ссылки на данную страницу.