Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Общие вопросы по .NET и C# > TextBox |
Автор: Jlekc 12.5.2005, 16:49 |
как вводить в ТекстовеПоля тока определенные символы, например цыфры. В других языках есть метод restrict, пытаюсь нати аналог, ибо отслеживать нажатия клавиш тупо |
Автор: redrick 12.5.2005, 16:55 |
может есть чтото типа FormatedTextBox со свойствами, задающими формат ввода данных ? |
Автор: AntonSaburov 12.5.2005, 17:21 | ||
Я делал так - в событие Valideting (или что-то подобное) пытался сконвертировать в число и ловил эксепшн. Что-то вроде такого (это просто типа эскиза к коду)
|
Автор: Jlekc 12.5.2005, 17:39 |
а есе я хачу разрешить вводить: точки, запятые, и чот есе |
Автор: AntonSaburov 12.5.2005, 18:53 |
Ну тогда проверяй на доступные символы теми же регулярными выражениями. |
Автор: Jlekc 12.5.2005, 21:25 |
яс, просто думал уже предвдели ткое |
Автор: mr.DUDA 13.5.2005, 09:09 | ||
Это ж стандартный TextBox, где ему ![]() Нуна или самостоятельно в Validate проверять формат строки, или юзать какой-нить более продвинутый компонент (с http://www.codeproject.com/cs/miscctrl/ например). |
Автор: Jlekc 13.5.2005, 16:41 |
заль, лада не проблема, просто видел ТекстБоксы с встроеными валидаторами, инфу на них скидывали как RegExp и не парились с оброботкой на нажатия клавиш |
Автор: lioness 20.9.2006, 11:33 | ||||
А у меня тут такая небольшенькая странность с Validating Может, где спрашивали уже, но я не нашла. Вот пример проверки TextBox, чтобы пустым не отправляли.
В дизайнере, как и положено, строка стоит
При попытке щелкнуть на кнопку для отправки - высвечивается восклицательный знак возле текстбокса. НО !!! Только если я предварительно щелкну по пустому полю тексбокса. Ну или я что-то туда записАла, а потом стерла. Если поле остаётся девственно чистым, то бишь я до него вообще не дотрагивалась, и пытаюсь отправить "пустышку", то Validating не происходит вощщее. Я ставила остановы - я совсем не прихожу по прерыву в это событие. Как будто бы надо еще на TextBox поставить что-то типа "OnValidation". Я выдумываю - такого проперти нет, но очень хочется. ![]() Конечно, можно на кнопке-отправке поставить проверку на пустоту ".Trim.Lenght == 0" и не допустить "пустой" отправки (что я сейчас и сделала), но принципиально - почему Validation начинает валидировать только после "касания" текстового поля? |
Автор: Exception 20.9.2006, 17:53 | ||
Validating проходит именно при потере контролом фокуса. |
Автор: ivashkanet 20.9.2006, 17:54 |
![]() $tatic, а где ты выкапал инфу о очередностях событий? Или сам вычислил? |
Автор: $tatic 20.9.2006, 18:00 |
ivashkanet, MSDN :: .NET Framework Class Library :: Control.Validating Event Добавлено @ 18:10 А вообще валидацию стандартным способом я бы не рекомендовал проводить. Я однажды запускал пример от MS, в котором производится проверка на валидность е-мэйла. Так вот я не мог корректно закрыть это приложение, поскольку его блокировал валидатор. И вообще не мог перейти к другому контролу на форме, поскольку валидация отменяет и потерю фокуса. Так что будьте с этим осторожны. |
Автор: mr.DUDA 20.9.2006, 21:35 |
Можно у формы подписываться на Closing и там дёргать метод Validate каждого контрола - если хотя бы один скажет что "нельзя", то выставлять e.Cancel и форма не закроется. |
Автор: $tatic 21.9.2006, 12:27 |
mr.DUDA, про что я и писал в предыдущем посте. Т.е. пока юзер все правильно не введет, то и "Отмену" нажать не сможет ![]() |
Автор: pavelkoptev 21.9.2006, 12:50 | ||
тут есть такая шняшка - у баттона закрытия формы(да и еще у других компонентоф если надо) можно отключить их участие в Validate.... свойство CausesValidation(если не путаю) ставишь в FALSE и можешь форму етой кнопкой закрывать спокойно.... |
Автор: $tatic 21.9.2006, 13:28 |
pavelkoptev, нет. CausesValidation работает не так. Оно управляет валидацией того контрола, на котором установлено/сброшено. Если сбросить CausesValidation для кнопки, то эта кнопка не будет вызывать событие Validation. Но ведь все равно валидность кнопки никто не проверяет ![]() |
Автор: lioness 21.9.2006, 15:56 |
Да, CausesValidation можно просто у кнопки отключить и форма закроется. Таким образом можно освободить, например, "cancel", чтобы закрыть форму без всяких лишних вопросов. Но действительно Validating жутко назойливый и действительно уж если попал с этим восклицательным знаком, то пока не напишешь ПРАВИЛЬНО - не отстанет. Из души вынет. А тут еще чудесатее и чудесатее. Я жаловалась, что пока поле "нетронутое" валидейшн не сработает. Но если TextBox-а два, то тогда первое поле СРАЗУ среагирует на отправку пустышки, как я и хотела видеть реакцию, но при одном поле. Жму commit и одно (первое пустое) поле послушно зажигается красненьким знаком. Что LostFocus и от количества текс-боксов "теряется"? |
Автор: pavelkoptev 21.9.2006, 16:20 | ||
господа!!! я тут схожу с ума... был согласен с lioness полностью до сообщения от $tatic.... попробовал как я выше писал - непахает - а раньше работало, щоб мне фсю жизнь без кряков жить работало, да и читал об этом гдето... хто рассудит??? |
Автор: mr.DUDA 21.9.2006, 22:50 |
Код - в студию. Товарищи, здесь телепатов нет. З.Ы. а лучше весь проект (который "глючный") в зип - и приаттачить к посту. |