2012-07-10 11 views
5

Vorrei selezionare tutto quando un utente fa clic con il pulsante destro del mouse sul controllo del mio browser web.Cattura l'evento del tasto destro del mouse di un controllo del browser Web

Sto sviluppando un'app di moduli di vincita e utilizzo i browser Web per visualizzare le mie informazioni, perché posso usare html per definire le parole.

Il menu di scelta rapida del clic non funziona per me. Le opzioni su di esso sono tutte irrilevanti per la mia app.

Ma il menu di scelta rapida dopo aver selezionato è stato selezionato, desidero conservare, copiare, tagliare, incollare le opzioni.

posso già selezionare tutto:

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

vorrei solo farlo nella giusta evento click del browser web?

+0

possibile duplicato [Jquery/JS prevenire destro menu del tasto nei browser] (http://stackoverflow.com/questions/4920221/jquery-js-prevent-right-click-menu-in-browsers) – Piskvor

+0

@Piskvor Questa è un'app per vincere e fatta in C#, non c'è Jquery/JS coinvolto, né voglio impedire il menu del tasto destro, quindi questo non è un possibile duplicato !! – Pomster

+0

Quindi, ora stai dicendo che non c'è il controllo del webbrowser? Interessante ... – Piskvor

risposta

2

Questo funziona :)

Quando il menu contestuale mostra selezionare tutto è in funzione spingendo fuori menu contestuale che voglio, con la copia, incolla, taglia e così via.

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

Non cattura esattamente l'evento del clic destro, ma ContextMenuShowing verrà sempre visualizzato quando si fa clic sul browser web. quindi è un buon lavoro. – Pomster

+0

cosa succede se il documento è nullo ?? per PDF webbrowser Documento sempre nullo. Quindi come creerai l'evento click? –

4

This articolo mostra come è possibile sostituire il menu di scelta rapida del browser Web con il proprio.

In alternativa, se si esegue il seguente JavaScript all'interno del browser Web, che consente di disattivare il menu contestuale del tasto destro predefinito:

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

Se si sta utilizzando WinForms, piuttosto che WPF, è possibile impostare il IsWebBrowserContextMenuEnabled false per impedire il menu di scelta rapida di IE, nel qual caso utilizzerà il ContextMenu che si fornisce sul controllo WebBrowser.

WPF non ha la stessa proprietà esposta nel browser Web, quindi potrebbe non essere così semplice. In questo caso potrebbe essere necessario utilizzare WindowsFormsHost per ospitare il browser Web WinForms in WPF.

+0

+ 1 .Grazie per la risposta :), sono riuscito a trovare un lavoro fantastico :) – Pomster

5

Maniglia MouseDown evento:

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

e assicurarsi utente ha premuto il tasto destro del , quindi selezionare tutti:

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

+1 Grazie, pensa che questo sia il modo giusto per farlo e risponde alla domanda posta. – Pomster

0

Devi essere sicuri, che la WebBrowser.Document la proprietà è già stata caricata. Quindi puoi registrare l'evento del mouse.

 
`browser.DocumentCompleted += (s, e) => { 
          browser.Document.MouseMove += (sM, eM) +=> { 
                  Debug.WriteLine(eM.ClientMousePosition.X); 
                     }; 
             }; 
` 
Problemi correlati