Я имею дело с ошибкой, связанной с приложением C # WinForms, которое запускается с заставкой, затем закрывает заставку и открывает форму входа.На некоторых компьютерах все работает нормально.На других появляется форма входа, но с мигающей строкой заголовка, которая после нескольких миганий теряет фокус.Курсор все еще мигает в текстовом поле «Имя пользователя», но приложение не имеет фокуса, и когда вы начинаете печатать, ничего не происходит, что очень раздражает пользователя.
Кажется, что нетРазница в том, какая ОС работает (мы пробовали Windows 7 и Server 2008), и мы особенно старались не вводить ввод с клавиатуры или мыши после запуска приложения.
Теперь - кто-нибудь знает, чтоможет привести к потере фокуса в приложении?
Как бы вы решили эту проблему?Нам не удалось воспроизвести проблему в среде отладки Visual Studio, но это меня не совсем удивляет, так как я предполагаю, что это проблема взаимодействия скомпилированного приложения с ОС ... или я ошибаюсь?
РЕДАКТИРОВАТЬ # 1: Я думал, что это было решено @vinodpthmn, гарантируя, что заставка должным образом закрыта, прежде чем появится форма входа, но это, похоже, не помогло.Поэтому я создал регистратор для отслеживания всех событий и потоков и нашел следующие интересные записи журнала:
Thread 01 - 2012/03/29 12:51:09.693 - Show splash screen
Thread 01 - 2012/03/29 12:51:20.350 - Splash screen closed
Thread 01 - 2012/03/29 12:51:20.490 - Login Form Activated
Thread 01 - 2012/03/29 12:51:20.522 - Login Form Load
Thread 01 - 2012/03/29 12:51:25.694 - Login Form deactivated
Thread 01 - 2012/03/29 12:51:25.694 - Active form =
Thread 01 - 2012/03/29 12:51:25.694 - Active app =
В последних строках, отображающих активную форму и приложение, соответственно отображаются Form.ActiveForm
и текущее активное приложение вWindows (код для этого здесь ).И они оба пустые / нулевые.Это так, даже если в форме входа в систему Load я звоню Activate()
или SetForegroundWindow()
, как предложено @memetolsen.Форма входа никогда не получает фокуса!
Есть идеи?
РЕДАКТИРОВАТЬ # 2: Ну, я просто удалила заставку, и теперь форма входа получает фокус.Замена заставки вновь приводит к ошибке.Но я ввел код, чтобы убедиться, что заставка расположена - не просто закрыта - прежде чем я попытаюсь открыть форму входа.
Может ли быть разница, что заставкаоткрывается с Application.Run(frmSplash)
?