Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 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-сайт: hw.t-k.ru
 Профиль | | #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

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам