2012-07-10 8 views
5

사용자가 내 웹 브라우저 컨트롤을 마우스 오른쪽 버튼으로 클릭하면 모두 선택하고 싶습니다.웹 브라우저 컨트롤의 마우스 오른쪽 버튼 이벤트 캡처

저는 HTML을 사용하여 단어의 스타일을 지정할 수 있기 때문에 win forms 앱을 개발하고 웹 브라우저를 사용하여 정보를 표시합니다.

마우스 오른쪽 버튼 클릭 상황에 맞는 메뉴가 작동하지 않습니다. 그것의 옵션은 모두 내 애플 리케이션에 무관하다.

선택 후 컨텍스트 메뉴는 복사, 잘라 내기, 붙여 넣기 옵션을 유지하려고합니다.

이미 모두를 선택할 수 있습니다

getCurrentBrowser().Document.ExecCommand("SelectAll", true, null); 

난 그냥 웹 브라우저의 오른쪽 클릭 이벤트를 원하십니까?

+0

중복 가능성 (http://stackoverflow.com/questions/4920221/jquery-js-prevent-right-click-menu-in-browsers) – Piskvor

+0

[JQUERY/JS 브라우저 오른쪽 클릭 메뉴 방지] @Piskvor 이것은 Winform 응용 프로그램이며 C# sharp에서 수행되었습니다. Jquery/JS가 참여하지 않았거나 마우스 오른쪽 버튼 메뉴를 막으려 고하지 않으므로 가능한 중복이 아닙니다! – Pomster

+0

그래서 지금 웹 브라우저 컨트롤이 없다고 말하는 것입니까? 흥미로운 ... – Piskvor

답변

2

이 작동합니다 :)

상황에 맞는 메뉴 등등 잘라, 모두가 실행되는 복사, 붙여 넣기로, 내가 원하는하려면 contextmenu을 추진하고있다 선택 표시합니다.

private void webCompareSQL_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) 
     { 
      if (webCompareSQL.Document != null) 
      { 
       webCompareSQL.Document.ContextMenuShowing += DocMouseClick; 
      } 
     } 
     void DocMouseClick(object sender, HtmlElementEventArgs e) 
     { 
      webCompareSQL.Document.ExecCommand("SelectAll", true, null); 
     } 
+0

정확한 클릭 이벤트를 캡처하지는 않지만 웹 브라우저를 클릭하면 contextMenuShowing이 항상 표시됩니다. 그래서 그것의 좋은 일을 주위에. – Pomster

+0

Document가 null의 경우는 어떻게됩니까 ?? for PDF webbrowser 문서 항상 null입니다. 다음에 클릭 이벤트를 만드는 방법은 무엇입니까? –

4

기사에서는 웹 브라우저의 상황에 맞는 메뉴를 자신의 것으로 바꿀 수있는 방법을 보여줍니다. 오히려 WPF보다 윈폼을 사용하는 경우가 IsWebBrowserContextMenuEnabled을 설정할 수 있습니다

document.oncontextmenu=new Function("return false") 

: 웹 브라우저 내에서 다음과 같은 자바 스크립트를 실행하면

또한, 그것은 기본 마우스 오른쪽 단추로 클릭하고 상황에 맞는 메뉴를 사용할 수 없게됩니다 false로 설정하면 IE 컨텍스트 메뉴가 나타나지 않으므로 WebBrowser 컨트롤에서 제공하는 ContextMenu를 사용합니다.

WPF는 웹 브라우저에 동일한 속성이 표시되지 않으므로 그리 쉽지 않을 수 있습니다. 이 경우 WindowsFormsHost을 사용하여 WPF에서 WinForms 웹 브라우저를 호스팅해야 할 수 있습니다.

+0

+ 1. 답변 감사합니다 :) ^^ 멋진 작업을 찾을 수있었습니다 :) – Pomster

5

핸들 MouseDown 이벤트 :

webBrowser.Document.MouseDown += new HtmlElementEventHandler(Document_MouseDown); 

지 확인하십시오 사용자가 모든 선택 마우스 오른쪽 버튼을 누르면 :

void Document_MouseDown(object sender, HtmlElementEventArgs e) 
{ 
    if(e.MouseButtonsPressed == MouseButtons.Right) 
    { 
     webBrowser.Document.ExecCommand("SelectAll", true, null); 
    } 
} 
+1

+1 감사합니다. 올바른 답변이며 질문에 대한 답변입니다. – Pomster

0

당신은해야 할 필요는 WebBrowser.Document 그 속성이 이미로드되었습니다. 그런 다음 Mouse 이벤트를 등록 할 수 있습니다.

 
`browser.DocumentCompleted += (s, e) => { 
          browser.Document.MouseMove += (sM, eM) +=> { 
                  Debug.WriteLine(eM.ClientMousePosition.X); 
                     }; 
             }; 
` 
관련 문제