스플래시 화면으로 시작하고 스플래시 화면을 닫고 로그인 양식을 여는 C# WinForms 앱 관련 버그를 처리하고 있습니다. 일부 컴퓨터에서는 모든 것이 잘 작동합니다. 다른 사용자의 경우 로그인 양식이 나타나지만 깜박이는 제목 표시 줄이 깜박입니다.이 제목 표시 줄은 초점을 잃습니다. 커서는 여전히 "사용자 이름"텍스트 상자에서 깜박이지만 앱에는 포커스가 없으며 입력을 시작하면 아무 일도 일어나지 않아 사용자에게는 매우 성가 시게됩니다.모달 대화 상자가 포커스를 얻지 못합니다.
실행중인 OS (Windows 7 및 Server 2008을 사용해 보았습니다.)와 차이가없는 것 같으며 응용 프로그램을 시작한 후에 키보드 또는 마우스 입력을하지 않는 것이 좋습니다.
이제 누가 앱이 포커스를 잃을 수 있는지 알 수 있습니까?
또는이 문제를 어떻게 디버그하겠습니까? 우리는 Visual Studio 디버그 환경에서 문제를 재현 할 수 없었지만 컴파일 된 응용 프로그램이 OS와 상호 작용하는 방식에 문제가 있다고 생각하기 때문에 완전히 놀라지 않습니다 ... 아니면 틀린가요?
수정 # 1 : 나는이 로그인 폼이 표시되기 전에 시작 화면이 제대로 닫혀 있는지 확인함으로써, @vinodpthmn에 의해 해결되었다 생각했지만,이 도움이되지 나타납니다. 활성 형태와 응용 프로그램을 각각 표시 Form.ActiveForm
와 현재 활성화 된 윈도우의 응용 프로그램 (코드를 보여주는
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 =
그 마지막 줄 : 그래서 나는 다음과 같은 흥미로운 로그 항목을 모든 이벤트와 스레드를 추적 할 수있는 로거를 생성하고, 발견 이 here). 둘 다 비어 있거나 null입니다. 로그인 폼에 Load @ I가 Activate()
또는 SetForegroundWindow()
이라면 @memetolsen이 제안한 것처럼 그렇게 할 수 있습니다. 로그인 양식은 포커스를받지 못합니다!
아이디어가 있으십니까?
편집 # 2 : 글쎄, 방금 스플래시 화면을 제거하고 이제 로그인 양식에 초점을 맞 춥니 다. 스플래시 화면을 바꾸면 버그가 다시 나타납니다. 하지만 로그인 폼을 열려고 시도하기 전에 스플래시 화면이 이되도록을 처리하도록 코드를 입력했습니다.
스플래시 화면이 Application.Run(frmSplash)
으로 열리는 차이점이 있습니까?
사실 뒤에 디버거를 연결하십시오. –
스플래시 화면이 삭제되었거나 여전히 기본 UI 메시지 스레드와 간섭 할 수 있습니다. – Lloyd
다른 창이 활성화 될 때 모달 창에서 깜박이는 제목을 가져옵니다. – Polyfun