2011-03-07 3 views
2

기본 TabControl의 TabPages 중 하나에서 WebBrowser 컨트롤이 포함 된 Visual Studio 2008 .NET 2.0 WinForms 응용 프로그램이 있습니다. 이 WebBrowser는 응용 프로그램과 함께 배포되는 PDF 파일을 표시하는 데만 사용되며 해당 WebBrowser 컨트롤 자체를 제외하고 해당 탭에는 다른 컨트롤이 없습니다.탭에서 WebBrowser 컨트롤을 사용하여 기본 창을 비활성화

문제 : 프로그램 시작시 응용 프로그램의 기본 창이 활성화되어 있지 않습니다. 활성화되기 전에 [Alt-Tab]에 의해 클릭되거나 선택되어야합니다.

나는 FormMain_Load()에서 해고 된이 두 줄까지 추적했다. 내가 표시 할 PDF 파일에 완전한 경로를 형성하고,라고 File.Exists()를 정말 거기에 있는지 확인하기 위해 (그리고 그것은이다)했습니다

Uri uri1 = new Uri("path\\to\\filename.pdf"); 
webBrowser1.Url = uri1; 

내가 2 주석 경우 위의 줄은 물론 PDF 파일을 WebBrowser 컨트롤에로드하지 않지만 프로그램이 정상적으로 시작될 수 있습니다. - 주 창이 활성화되어 있습니다 (제목 표시 줄에 "활성 창"색이 표시됨). 텍스트 커서가 깜박입니다 첫 번째 탭의 첫 번째 탭에서 FormMain_Shown()의 TextBox.Select()를 사용하여 입력합니다.

두 번째 줄에 다시 추가하면 PDF 파일이 올바르게로드되지만 시작시 프로그램의 주 창이 비활성화됩니다 (제목 표시 줄에 "비활성 창"색이 표시됨). 초점 문제는 아니지만 z 주문과 관련이있을 수 있습니다. 다른 윈도우는 메인 윈도우를 가리고 있지 않습니다. 데스크탑 아이콘에서 프로그램을 시작 했으므로 화면 하단의 아무 TaskBar 버튼도 활성 상태의 윈도우를 보여주지 않습니다. 정상적으로 시작되며 최소화되거나 최대화되지 않습니다.

BTW이 TabPage는 WebBrowser 컨트롤이있는 탭이 첫 번째 탭이 아닙니다. 이 줄은 예외를 throw하지 않기 때문에 PDF 파일을 올바르게로드한다는 것을 알고 있으며 해당 탭을 클릭하면 PDF 파일이 정상적으로 표시됩니다. 또한 FWIW 최신 IE 업데이트 및 Adobe Reader X 버전이 있습니다.

내 개발 컴퓨터 (Windows 7 64 비트 Ultimate와 몇 가지 IDE 플러그인)가 이상하게 보일 수도 있지만 표준 32 비트 XP를 실행하는 고객도이를보고하고 있습니다. 또한 7과 Vista의 내 XP 가상 시스템은 동일한 것을 보여줍니다. URL 로딩을 비활성화하자마자 프로그램은 예상대로 활성 창으로 시작됩니다.

+0

방법 어도비 리더는 IE 창 버그 그냥 아주 비옥 한 소스 탈취. Windows 정품 인증, 포커스, 마우스 휠 문제가 있습니다. 그들은 문제없이 작동하게하는 법을 모르고 그것을 결코 얻지 못할 것입니다. 장기 정신 건강을 염려한다면 독자를 직접 시작하십시오. –

답변

1

불행히도 과거와 똑같은 문제에 대한 해결 방법이 없었습니다. IE7이 ActiveX를 통해 포커스를 훔치는 것을 막을 수있는 방법이 있습니다. 그러나 나는 그것을 읽지 않았습니다.

필자는 웹 컨트롤이있는 탭을 사용자가 실제로 입력 할 때까지 포커스가 도난 당하지 않도록 TabControl의 OnSelectedIndexChanged 이벤트에서 .pdf를 WebBrowser 컨트롤에로드하는 작업을 수행했습니다.

나는 이것이 최고는 아니지만 그것이 내가 가진 전부라는 것을 알고있다.

하지만 유망한 보이는 :

Prevent WebBrowser control from stealing focus?

http://www.pcreview.co.uk/forums/hidden-webbrowser-stealing-focus-t2616720.html

+0

고마워요. jskiles1. Google 검색에서 해당 페이지를 보았지만 특정 문제를 정확히 처리하지 못했습니다.첫 번째는 내가 만들고자하는 행동을 막는 것에 대해 이야기합니다 - 나는 그에게 문제가 있었으면 좋겠다! 두 번째는 웹 페이지로 이동하기 전과 후에 초점을 저장하고 복원하는 방법에 대해 논의하는 것 같습니다. 그러나 부모 폼의 Deactivate 이벤트와 WebBrowser의 이벤트 중 일부를 확인합니다. 감사! –

관련 문제