2011-03-02 3 views
5

안에 WebBwoser이 있고 메뉴 항목의 바로 가기로 사용할 Ctrl + O 키 조합을 캡처하고 싶습니다. 내 문제는 내가 WebBrowser을 클릭하고 Ctrl + O를 누르면 내 메뉴 항목이하는 일 대신 Internet Explorer 대화 상자가 나타납니다. 내 FormKeyPreview 속성을 true으로 설정했습니다. 또한 KeyDown 이벤트에 대한 이벤트 처리기를 추가했지만 WebBrowser을 클릭하면 호출되지 않습니다. 이 문제를 어떻게 해결할 수 있습니까?WebBrowser가 내 양식에서 KeyDown 이벤트를 "훔치다"

답변

7

이렇게하면 문제가 해결됩니다. 웹 브라우저의 액셀러레이터 키를 비활성화했습니다.

webBrowser1.WebBrowserShortcutsEnabled = false; 

IsWebBrowserContextMenuEnabled이 필요한지 여부를 알아볼 수도 있습니다.

일부 액셀러레이터 키가 브라우저에서 활성화되어 있어야하는 경우 다음 문제가 해결 될 수도 있습니다. 그러나이 접근법은 초점을 맞추기 위해 무언가를 요구합니다. MessageBox.Show()dialog.ShowDialog()

private void DoSomething() 
    { 
     webBrowser1.PreviewKeyDown += new PreviewKeyDownEventHandler(webBrowser1_PreviewKeyDown); 
    } 
    private void webBrowser1_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e) 
    { 
     if (e.Control && e.KeyCode == Keys.O) 
     { 
      menuItem.PerformClick(); 
      // MessageBox.Show("Done"); 
     } 
    } 
+0

글쎄, 유일한 가능한 솔루션이? 사용자가 Ctrl + F를 눌러 검색하는 것과 같은 다른 작업을 수행 할 수 있기를 바랍니다. – Juan

+0

+1 네트워크 속도로 저를 이길 때, MSDN에서 링크를 찾으려고 할 때 브라우저가 멈 춥니 다. ( –

+1

위의 편집 된 답변에서와 같이'webBrowser'에서'PreviewKeyDown'을 캡처 할 수 있습니다 .. –

2

당신은 ProcessCmdKey 방법 오버라이드 (override) 할 수있는 작업을 수행 할 수 있습니다

protected override bool ProcessCmdKey(ref Meassage msg, Keys keyDaya) 
{ 
    //Trap for Key down 

    return true; //false if you want to suppress the key press. 
} 
관련 문제