2012-07-10 20 views
5

Chciałbym zaznaczyć wszystko, gdy użytkownik kliknie prawym przyciskiem myszy w przeglądarce.Przechwytywanie zdarzenia kliknięcia prawym przyciskiem myszy kontrolki przeglądarki internetowej

Rozwijam aplikację formularzy wygranych i używam przeglądarek do wyświetlania moich informacji, ponieważ mogę używać html do stylizowania słów.

Menu kontekstowe z prawym przyciskiem myszy nie działa dla mnie. Opcje na nim są nieistotne dla mojej aplikacji.

Ale menu kontekstowe po wybraniu zostało dokonane Chcę zachować, kopiować, wycinać, wklejać opcje.

mogę już wybierać wszystkich:

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

Chciałbym, aby to zrobić kliknij prawym przyciskiem myszy w przypadku przeglądarki internetowej?

+0

możliwe duplikat [jQuery/JS zapobiec prawy kliknij menu w przeglądarkach] (http://stackoverflow.com/questions/4920221/jquery-js-prevent-right-click-menu-in-browsers) – Piskvor

+0

@ Piskvor Jest to aplikacja do wygrywania formularzy i wykonana w języku C#, nie ma w niej zaangażowanych Jquery/JS i nie chcę uniemożliwić menu prawego przycisku myszy, więc nie jest to możliwy duplikat !! – Pomster

+0

Więc, teraz mówisz, że nie ma kontroli nad przeglądarką? Interesujące ... – Piskvor

Odpowiedz

2

To działa :)

Gdy menu kontekstowego wybierz pokazuje wszystko działa wypychania ContextMenu zechcę, z kopiuj, wklej, wytnij i tak dalej.

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

Nie przechwytuje zdarzenia prawym kliknięciem, ale kontekstMenuShowing będzie zawsze wyświetlany po kliknięciu przeglądarki internetowej. więc jest to dobra robota. – Pomster

+0

co jeśli dokument ma wartość zerową? dla przeglądarki internetowej w przeglądarce Dokument zawsze ma wartość null. W jaki sposób utworzysz wydarzenie click? –

4

This Artykuł przedstawia, w jaki sposób można zamienić menu kontekstowe przeglądarki internetowej na własne.

Alternatywnie, jeśli wykonasz następujące Javascript z poziomu przeglądarki internetowej, będzie to wyłączyć menu domyślnego kontekstu prawym kliknij:

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

Jeśli używasz WinForms zamiast WPF można ustawić IsWebBrowserContextMenuEnabled na false, aby zapobiec menu kontekstowemu IE, w takim przypadku użyje menu ContextMenu, które podajesz w formancie WebBrowser.

WPF nie ujawnia tej samej właściwości w przeglądarce internetowej, więc może nie być tak łatwe. W takim przypadku może być konieczne użycie usługi WindowsFormsHost do hostowania przeglądarki internetowej WinForm w WPF.

+0

+ 1 .Dziękuję za odpowiedź :), udało mi się znaleźć niesamowitą pracę :) – Pomster

5

Uchwyt MouseDown wydarzenie:

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

i upewnij się, że użytkownik nacisnął przyciskprawo, a następnie zaznacz wszystko:

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

+1 Dziękujemy, że jest to właściwy sposób, aby to zrobić i odpowiada na pytanie zadawane. – Pomster

0

Musisz być pewny, że WebBrowser.Document właściwość jest już załadowana. Następnie możesz zarejestrować zdarzenie Mouse.

 
`browser.DocumentCompleted += (s, e) => { 
          browser.Document.MouseMove += (sM, eM) +=> { 
                  Debug.WriteLine(eM.ClientMousePosition.X); 
                     }; 
             }; 
` 
Powiązane problemy