Ввод в TextBox только цифр и английских символов
Как наиболее правильно запретить ввод в TextBox символов любой раскладки кроме английской и цифр. Желательно не сравнивая в цикле каждый символ строки с шаблоном.
![]()
У меня работает код, основанный на этом ответе:
Вставка работает, если в ней нет запрещённых символов.
![]()
![]()
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.9.7.43618
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Справочник по C#
Если вы столкнулись с проблемой и хотите поделиться своим опытом, знаниями или у вас есть интересная статья с иностранного сайта, предложение новой темы, статью которую Вы хотите видеть в ближайшем будущем, расскажите нам об этом и мы обязательно поделимся этими знаниями со всеми. Возможно, для других ваши знания, опыт и советы окажутся очень ценными и помогут вовремя найти правильный выход или не совершить ошибок.
Так же если у вас есть предложение о сотрудничестве, пожелания, указать на нарушения сайта или просто сказать слова благодарности, все это вы можете сделать через форму обратной связи. Читать дальше
How to allow only numbers inside a textbox in Winforms C#

Learn how to prevent the input from non numeric characters inside a textbox in Winforms.
To create an input element on your Windows Form that only accepts numbers, you have 2 options:
A. Use a NumericUpDown control
If you want to create an input that only accepts number, the first thing that you need to think in is the NumericUpDown control. This controls represents a Windows spin box (also known as an up-down control) that displays exclusively numeric values.
You can simply drag and drop this control from your Toolbox in the All Windows Forms components:

Or you can add it dinamically using code:
To retrieve its value you can simply access the Value attribute of the control, for example:
Note that the value is returned in decimal type, so you can format it into an integer, string or whatever you need. This field by itself doesn’t allow non-numeric characters inside.
B. With a real textbox
In case you aren’t able to use a NumericUpDown control for some reason, like the usage of a UI framework that only offers a textbox, you can still filter the input by handling properly its KeyPress event. The first you need to do is to add a function to the KeyPress event of your input by adding automatically the event with Visual Studio selecting your textbox and in the Properties toolbox (right bottom corner of VS), then selecting the events tab and double clicking the KeyPress option:

This will automatically add the KeyPress function on your class that will be empty, then you need to modify it with the following code to prevent the input from non-numeric characters:
To retrieve its value, you would need only to convert the string to a number by using the desired type:
Как в WPF сделать ограничение на некоторые символы в TextBox?
Как, к примеру, сделать возможность вводить только числа в текстовое поле TextBox? Либо наоборот только буквы. Искал про это инфу, нашёл решение для WinForms. Пробовал как этот вариант:
Для WPF они не работали
- Вопрос задан более трёх лет назад
- 3139 просмотров
- Вконтакте

- Вконтакте

- Вконтакте

Vamba45, нзчт. на самом деле, то что вы нашли для винформ, тоже костыль для такой задачи. у всех компонентов и формс и впф, есть события валидации. как раз для решения именно таких, и более интересных/сложных ситуаций — ввод даты, денежной суммы и т.д.
перехват ввода это более низкоуровневая фишка. к примеру хоткеи в том же текстбоксе.