Страница: 1 |
Страница: 1 |
Вопрос: UserControl и LostFocus
Добавлено: 15.08.04 18:38
Автор вопроса: Lister | ICQ: 298621256
Всем привет! Очень нужна помощь!
Есть UserControl. Нужно чтобы при определенных действиях (KeyPress, Click и пр.) контрол передавал фокус ввода другому контролу, например, текстбоксу.
Попытка создать у контрола Public Event LostFocus() и затем использовать его в работе ни к чему хорошему не привела - VB не хочет с ним работать :(
Одним словом, мне нужно заставить UserControl потерять фокус при нажатии enter и при этом нужно, чтобы произошло событие Контрол_LostFocus()
Народ, что делать??? :(
Ответы
Всего ответов: 10
Номер ответа: 1
Автор ответа:
Kodo
Разработчик Offline Client
ICQ: 293048085
Вопросов: 37
Ответов: 457
Профиль | | #1
Добавлено: 15.08.04 21:17
А создать эту процедуру LostFocus и при её выполнении в ПРОГЕ передавать фокус другому контролу? Типа SetFocus? Или не пашет?
Номер ответа: 2
Автор ответа:
night-roll
Вопросов: 36
Ответов: 326
Профиль | | #2
Добавлено: 15.08.04 23:06
есть такая возможность!
только я ещё сам не разобрался каким образом это делается.
sne показал, что в примере ButtonChamelion, где куча различных кнопок (автора я подзабыл) и у них реализовано Got & LostFocus (причем и при нажатии Tab).
зы
забыл - все кнопки там ЮзерКонтрол!!!
Номер ответа: 3
Автор ответа:
Lister
ICQ: 298621256
Вопросов: 57
Ответов: 304
Профиль | | #3
Добавлено: 15.08.04 23:19
Kodo: конечно не пашет Ты вопрос читал? Я совсем про другое
спрашивал
Номер ответа: 4
Автор ответа:
Kodo
Разработчик Offline Client
ICQ: 293048085
Вопросов: 37
Ответов: 457
Профиль | | #4
Добавлено: 15.08.04 23:22
Читал, и до сих пор не понял что ты спрашивал
-------------------------------------------------
Аесли-младший также избегал смотреть в ту сторону, где освобожденные, а затем закабаленные домовые получали по заслугам и другим незащищенным местам.
Номер ответа: 5
Автор ответа:
Lister
ICQ: 298621256
Вопросов: 57
Ответов: 304
Профиль | | #5
Добавлено: 15.08.04 23:26
Странно По-моему я основательно изъяснил свою проблему. Кстати, это
проблема абсолютно всех UserControl'ов. Остальные же поняли. И на примеры указали
Номер ответа: 6
Автор ответа:
Lister
ICQ: 298621256
Вопросов: 57
Ответов: 304
Профиль | | #6
Добавлено: 15.08.04 23:30
night-roll : не могу найти я этот пример
Он на VBNET есть? Если да, то в каком разделе?
Номер ответа: 7
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #7
Добавлено: 15.08.04 23:40
Нет, на сайте его нет, хотя пример и вправду замечателен и по возможностям, и как кнопка, и как туториал пол написанию своих контролов
Но!
1. Можешь попросту послать клавишу табуляции (SendKeys({Tab}))
2. Ели точно знаешь какой контрол есть на форме, можешь обратиться к нему через св-во Parent контрола...
3. Лучше всего попробуй Call SendMesage(UserControl.hWnd, WM_KILLFOCUS, 0&, ByVal 0&
Номер ответа: 8
Автор ответа:
Lister
ICQ: 298621256
Вопросов: 57
Ответов: 304
Профиль | | #8
Добавлено: 15.08.04 23:49
Так где же взять пример?
1. Не пробовал
2. Не пробовал.
3. Пробовал. При отправке WM_KILLFOCUS контрол просто теряет фокус...
и все. LostFocus при этом не срабатывает
Причем при "умертвлении" фокуса WM_KILLFOCUS'ом контрол после первого
щелчка мышью по нему не хочет его снова приобретать...
Вот такой каламбур...
Номер ответа: 9
Автор ответа:
Lister
ICQ: 298621256
Вопросов: 57
Ответов: 304
Профиль | | #9
Добавлено: 16.08.04 00:35
Ты был прав!
Помогло SendKeys "{Tab}"
Спасибо!
Номер ответа: 10
Автор ответа:
Lister
ICQ: 298621256
Вопросов: 57
Ответов: 304
Профиль | | #10
Добавлено: 16.08.04 16:06
для sne:
Я порой забываю простые истины VB
Спасибо тебе большое, что напомнил про SendKeys "{Tab}" !!!
для остального народа:
Я довольно часто в проектах делаю возможность перехода от контрола к
контролу на форме нажатием не только клавиши Tab, а также и нажатием
клавиши Enter. По-моему это очень удобно.
Например, для перехода от одного текстбокса к другому я делал
следующее:
Private Sub txtText1_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
Case 13
txtText2.SetFocus
Case Else
...
End Select
End Sub
и фокус ввода передавался текстбоксу txtText2
Теперь же я вспомнил про SendKey :
Private Sub txtText1_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
Case 13
SendKeys "{Tab}"
Case Else
...
End Select
End Sub
Вывод:
Использовать SendKey гораздо удобнее, т.к. если
txtText2.Enabled = False
txtText2.SetFocus вызовет ошибку...
а SendKeys "{Tab}" просто перекинет фокус ввода к доступному контролу,
следующему по списку TabIndex