![]() |
|
Модераторы: gambit, Partizan |
![]()
|
|
| CityAC |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 161 Регистрация: 3.11.2006 Где: Украина Горловка Репутация: нет Всего: 1 |
Поле для ввода телефонного номера.
Если пользователь нажал кнопку, отличную от цифры и пробела, введенный символ нужно стереть. Думал получится имитацией кнопки backspace, но че то не выходит. Помогите плз.
--------------------
Вижу цель, не вижу припятствий. |
|||
|
||||
| Baa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2639 Регистрация: 12.4.2002 Где: Москва Репутация: нет Всего: 12 |
Может так? Твой вариант не учитывает ctrl+v ;-) т.е. я могу вставить любую гадость Это сообщение отредактировал(а) Baa - 5.11.2007, 13:11 -------------------- "Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande |
|||
|
||||
| 1stain |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 486 Регистрация: 30.7.2007 Где: Киев - Харьков Репутация: 4 Всего: 40 |
а чем провинился стандартный MaskedTextBox ?
-------------------- Все знают, что это невозможно. Но вот приходит невежда, которому это неизвестно - он-то и делает открытие. (Albert Einstein) ![]() |
|||
|
||||
| tea_723 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 13.9.2007 Репутация: нет Всего: нет |
Чуть более развернуто чем Ваа написал.
Это если номер в трех textbox вводить. В C# сам переведешь или помочь? Private Sub txtSelPage_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) _Handles txtFax1.KeyPress, txtFax2.KeyPress, txtFax3.KeyPress 'This allows only numeric keypress. Dim tb As TextBox = sender Dim NChars As String = "1234567890,-()" & Chr(8) If NChars.IndexOf(e.KeyChar) = -1 Then ' Invalid Character e.Handled = True ElseIf e.Handled = False And tb.Text.Length = 0 Then tb.Text = e.KeyChar e.Handled = True tb.SelectionStart = 2 End If End Sub |
|||
|
||||
| CityAC |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 161 Регистрация: 3.11.2006 Где: Украина Горловка Репутация: нет Всего: 1 |
tea_723, Если можно то переведи, я в VB не силен --------------------
Вижу цель, не вижу припятствий. |
|||
|
||||
| Baa |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2639 Регистрация: 12.4.2002 Где: Москва Репутация: нет Всего: 12 |
Так а чем не устроил мой вариант или вариант с MaskedTextBox'ом? -------------------- "Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande |
||||
|
|||||
| tol05 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1632 Регистрация: 21.12.2006 Где: Харьков Репутация: 11 Всего: 170 |
а мне другое непонятно: зачем ждать когда пользователь нажмет клавишу, анализировать символ и потом его стирать, когда можно просто подцепиться на события нажатия клавиши и или пропускать символ в текстбокс, или нет.
-------------------- На хорошей работе и сны хорошие снятся. |
|||
|
||||
| Baa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2639 Регистрация: 12.4.2002 Где: Москва Репутация: нет Всего: 12 |
А если я нажму правой кнопкой мыши и выберу вставить? -------------------- "Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande |
|||
|
||||
| CityAC |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 161 Регистрация: 3.11.2006 Где: Украина Горловка Репутация: нет Всего: 1 |
ОК я за. Я подцеплялся, но не знаю как не пропустить символ Вставка ctrl+v для меня не критична. Если пользователь хочет поизвращаться таким методом - то это его проблемы Когда вводишь мобильные - все ОК, но когда городские - здесь путаница (коды могут быть 3-х,4-х, 5-ти значные) Это сообщение отредактировал(а) CityAC - 6.11.2007, 15:28 --------------------
Вижу цель, не вижу припятствий. |
|||
|
||||
| tol05 |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1632 Регистрация: 21.12.2006 Где: Харьков Репутация: 11 Всего: 170 |
ИМХО правильнее было бы заблокировать подобные действа...
Я считаю нужно реализовать только
Да и юзеру так спокойнее будет. Например кинул я из буфера 34pwd~6. Какие символы выбрасывать будем? ИМХО - много возни возле одного только контрола, а он в программе не один наверняка. Если на каждый контрол писать по три страницы кода, как потом такой код сопровождать, апгрейдить? И потом, если допускать много вариантов, тогда и много валидаций нужно делать, ReGex добавлять и т.д. Нужно упростить. Но это сугубо моя точка зрения. P.S. не успел... Как не пропустить? Да в обработчике KeyPress (или KeyDown, какой лучше подойдет - смотри сам) проверять код клавиши и если не тот - делать e.Handled = true и выходить. перехватывать нужно окном - Form.KeyPreview Property или WndProc формы переопределить и т.д. Посмотри. на форуме много вариантов было вот набросал пример, пропускает только 0
Это сообщение отредактировал(а) tol05 - 6.11.2007, 15:52 -------------------- На хорошей работе и сны хорошие снятся. |
||||
|
|||||
| KLUBS |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 93 Регистрация: 11.2.2007 Где: Спб Репутация: нет Всего: 1 |
Мне когда-то тоже нужел был такой textbox, я делал так:
есть начальная длина текста в контроле, после изменений знаем положение каретки, путем мат. операций получаем строку введенную, или вставленную, ее то и начинаеем кромсать Потом нашел МаскТекстБокс, и успокоился) |
|||
|
||||
| Experimenter |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 430 Регистрация: 8.5.2007 Где: Уфа Репутация: 1 Всего: 17 |
Дык еще у чаров (символов) свойства имеются IsDigit, IsWhitespace
-------------------- public Zlo FromTwoEvilsChooseSmaller(Zlo zlo1, Zlo zlo2){ if(zlo1 < zlo2) return zlo1; else if(zlo1 > zlo2) return zlo2; else throw new Exception("Kill yourself by the wall"); } |
|||
|
||||
| CityAC |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 161 Регистрация: 3.11.2006 Где: Украина Горловка Репутация: нет Всего: 1 |
Сделал так
И хотя tol05 писал: Я переопределил KeyPress в TextBox и вроде работает. А вообще спасибо, tol05, столько было написано, а реально нужно было e.Handled = true; добавить к коду Это сообщение отредактировал(а) CityAC - 8.11.2007, 02:01 --------------------
Вижу цель, не вижу припятствий. |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Разработка Windows Forms | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |