Страница: 1 |
Страница: 1 |
Вопрос: форма отображается, но не получает фокус...
Добавлено: 28.09.08 15:24
Автор вопроса: DimDoc
проблема такая:
добавляю SplashScreen1.vb к проекту, состоящему из одной формы.
указываю в свойствах проекта:
startup form: form1
отмечаю: enable application framework
splash screen: SplashScreen1
компилирую. в среде vs всё выполняется как надо.
теперь делаю Pablish. Запускаю setup.exe
запускается SplashScreen, затем появляется форма form1 - вроде бы как надо, Но сразу приступить к вводу данных в текстовые поля НЕВОЗМОЖНО. Надо сначала кликнуть по форме.
Почему форма теряет фокус после загрузки. В чём может быть ошибка???
помогите пожалуйста!
Ответы
Всего ответов: 6
Номер ответа: 1
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #1
Добавлено: 03.10.08 19:30
Скорее всего тут никакой ошибки нет. Попробуй в событии FormClosed(после закрытия формы) для SplashScreen принудительно передать фокус на нужную форму примерно так: Form1.Focus()
И еще.. каким образом ты закрываешь SplashScreen? Скрываешь через Hide или именно закрываешь?
Номер ответа: 2
Автор ответа:
DimDoc
Вопросов: 21
Ответов: 104
Профиль | | #2
Добавлено: 04.10.08 02:36
Спасибо за проявленный интерес.
Дело в том, что я не пишу никакой процедуры при закрытии SplashScreen.
Меня упрекали в том, что я зря пыжусь писать свой Sub Main(). И я решил попробовать. Будь, что будет...
Создал новый проект, добавил SplashScreen, перенастроил установки запуска проекта...
Всё вроде бы без лишнего вмешательства.
И ожидал, что проект заработает.
Думал так: если заработает - буду искать ошибки в своём коде.... Но проект не заработал как надо!!!
СТОП!!!
Перед отправкой этого письма решил ещё раз создать новый проект и протестировать его.
И, о чудо!!! Фокус не потерялся!!!
Извините.... Не понимаю - что это было???
Номер ответа: 3
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #3
Добавлено: 04.10.08 07:34
Правильно упрекали, это абсолютно незачем делать.(кроме каких то специфических задач, которые нельзя решить стандартными средствами)
Скорее всего (это лишь мои догадки) SplashScreen является модальным окном, и при его закрытии система сама решает передавать ли фокус на другое окно или нет. Попробуй сделать как я говорил ранее - передать фокус принудительно на нужную форму,чтоб у системы не оставалось желания оставить ее в деактивированном состоянии.
Номер ответа: 4
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #4
Добавлено: 04.10.08 07:40
Кроме того имеет смысл опробовать вариант предложенный Brand'om. Убрать из настроект проект SplashScreen(ввиду того что ты не можешь контролировать его появление и закрытие) и и показать его как обычную форум (через Show) в событии StartUp приложения (Brand показал в соседней ветке как это можно сделать)
p.s. Примером помочь не могу, поскольку уже давно не пишу на VB и соответственно не имею его под рукой..
Номер ответа: 5
Автор ответа:
DimDoc
Вопросов: 21
Ответов: 104
Профиль | | #5
Добавлено: 04.10.08 13:40
Спасибо! Суть понял.
Номер ответа: 6
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #6
Добавлено: 04.10.08 16:39
EROS, вариант предложенный Brand'ом как раз предусматривает использование стандартной Splash Screen и стандартной модели, и там все отлично работает и отлично ставит фокус.
У товарища проблемы из-за того что он сделал Splash Screen без стандартной модели, таймером и т.п.