![]() |
Модераторы: diadiavova, gambit |
![]() ![]() ![]() |
|
timich |
|
|||
Новичок Профиль Группа: Участник Сообщений: 38 Регистрация: 4.12.2008 Репутация: нет Всего: нет |
Привет всем! Такой вопрос. На форме расположил 20 текстовых боксов. Как сделать так чтобы во время работы программы для перехода от одного текстбокса к следующему не нужно было ничего нажимать, то есть не нужно нажимать Tab , а просто после ввода двузначного числа активным становился следующий тексбокс.
|
|||
|
||||
Pilger |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 257 Регистрация: 10.5.2008 Где: Германия Репутация: нет Всего: нет |
В обработчике события изменения текста в текстовом поле (TextChanged) добавляешь проверку на текст (длину или прочее) и даешь фокус другому текстовому полю (TextBox.Focus). Если их много, то можно их засунуть в Array и привязать одно событие.
Это сообщение отредактировал(а) Pilger - 12.2.2009, 15:44 -------------------- Ein Leben nach der Schleife existiert, nur wenn die Schleife terminiert. |
|||
|
||||
timich |
|
|||
Новичок Профиль Группа: Участник Сообщений: 38 Регистрация: 4.12.2008 Репутация: нет Всего: нет |
Если можно, на примере. Как должен выглядеть код, в какой части лучше его расположить.
|
|||
|
||||
Pilger |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 257 Регистрация: 10.5.2008 Где: Германия Репутация: нет Всего: нет |
Ну я ж говорю... ну вот простенький пример для одного текстового поля
Это сообщение отредактировал(а) Pilger - 13.2.2009, 01:39 -------------------- Ein Leben nach der Schleife existiert, nur wenn die Schleife terminiert. |
|||
|
||||
timich |
|
|||
Новичок Профиль Группа: Участник Сообщений: 38 Регистрация: 4.12.2008 Репутация: нет Всего: нет |
Во класс)) Я новичок просто)
Осваиваю Спасибо! А как будет для двадцати текстбоксов? Ну я понимаю, что можно для каждого бокса прописать также))), а как можно короче? Это сообщение отредактировал(а) timich - 13.2.2009, 03:50 |
|||
|
||||
Pilger |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 257 Регистрация: 10.5.2008 Где: Германия Репутация: нет Всего: нет |
Примерно так же, как вот и тут есть...
http://forum.vingrad.ru/forum/topic-222125.html Подробнее пока написать времени нет, т.к. я сейчас уеду и приеду через пару дней. Если не разберешься, потом помогу. -------------------- Ein Leben nach der Schleife existiert, nur wenn die Schleife terminiert. |
|||
|
||||
diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 8 Всего: 142 |
Выкладываю пример. Там для всех текстбоксов назначен один обработчик. Сделано это прямо в дизайнере, для этого надо выделить первый текстбокс, а потом, удерживая шифт выделить остальные. В таблице свойств перейти на вкладку событий и для события TextChanged написать имя обработчика. В коде для поиска следующего текстбокса используется табулятор( то есть: следующим будет тот, который следующий по табулятору). Такая схема работает, когда все бокы размещены в одном контейнере(в данном случае TableLayoytPanel).
Присоединённый файл ( Кол-во скачиваний: 4 ) ![]() -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит ![]() |
|||
|
||||
diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 8 Всего: 142 |
Да, ещё: Иф там проверяет, что введены действительно две цифры, кроме того, я ограничил максимальную длину текста двумя символами.
Это сообщение отредактировал(а) diadiavova - 14.2.2009, 12:12 -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит ![]() |
|||
|
||||
timich |
|
|||
Новичок Профиль Группа: Участник Сообщений: 38 Регистрация: 4.12.2008 Репутация: нет Всего: нет |
diadiavova, нет слов))
как всегда исчерпывающий ответ. большое спасибо! |
|||
|
||||
timich |
|
|||
Новичок Профиль Группа: Участник Сообщений: 38 Регистрация: 4.12.2008 Репутация: нет Всего: нет |
Подскажите пожалуйста что в этом коде не верно((
Это сообщение отредактировал(а) timich - 21.2.2009, 03:43 |
|||
|
||||
diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 8 Всего: 142 |
А то, что текстбоксов 28 а цикл обходит только 20...это так и было задумано?
А не так в коде то, что ты создаёшь вложенный цикл в ситации, когда надо просто проверить второе условие. В этом случае у тебя код всегда, когда есть хотябы один бокс с текстом больше одного символа будет устанавливать фокус на последнем доступном текстбоксе. Подробнее можно написать, если опишешь, что твой код должен делать(если конечно ворпос не адресован телепатам ![]() -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит ![]() |
|||
|
||||
timich |
|
|||
Новичок Профиль Группа: Участник Сообщений: 38 Регистрация: 4.12.2008 Репутация: нет Всего: нет |
![]() Есть массив из 28 текстбоксов. Все они должны принимать двузначное число и переводить фокус на следующий. Некоторые из первых двадцати, во время работы программы, могут быть неактивны (Enabled = False) и при передачи фокуса их нужно перепрыгивать. В программе перед вводом чисел будет нажиматься кнопка СБРОС. Я написал код для кнопки СБРОС в котором задаются неактивные текстовые поля(каждый раз разные), там же напишу операторы которые будут устанавливать фокус на первый активный тексбокс из первых двадцати. Массив я использовал для удобства. И для дальнейшей обработки введенных чисел программой. Хотя может массив и не обязателен... ФФФух! Вроде бы все описал ![]() ![]() |
|||
|
||||
diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 8 Всего: 142 |
Попробуй так.
Проверь в работе( мог ошибиться). Это сообщение отредактировал(а) diadiavova - 21.2.2009, 17:44 -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит ![]() |
|||
|
||||
timich |
|
|||
Новичок Профиль Группа: Участник Сообщений: 38 Регистрация: 4.12.2008 Репутация: нет Всего: нет |
Когда стартую программу выскакивает окно InvalidOperationException was unhandled
и сообщает An error occurred creating the form. See Exception.InnerException for details. The error is: Object reference not set to an instance of an object. То же самое было и с моим кодом(( Что это такое?? Запустил по шагово, это сообщение выскакивает на операторе If МасПоле(counter).Enabled Then |
|||
|
||||
diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 8 Всего: 142 |
А у тебя все текстбоксы инициированы? Такое обычно бывает, когда обращаешься к пустой переменной.
И ещё: а чем тебе не подошёл тот вариант, который я выложил вначеле? -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума VB .NET | |
|
Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, diadiavova. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | VB .NET | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |