2010-12-20 27 views
12

En mi aplicación, tengo un formulario que contiene un control de navegador en el que se muestra un informe de SSRS. Me gustaría evitar que el usuario haga clic derecho en el control del navegador y se le muestre el menú emergente. Idealmente, me gustaría que el clic derecho no haga nada. ¿Hay alguna manera de que pueda lograr esto?WebBrowser Control - Prevenir clic con el botón derecho

+1

¿Formas de Windows o WPF? ¿Es este el control WebBrowser o el control de Informe? –

+0

¿Qué versión de SQL Server –

+0

Si ha implementado un control de navegador, solo para mostrar un informe, en un control web SSRS, ¿por qué no usa el control de informes de Windows y evita el control del navegador en este escenario (si es así?)! –

Respuesta

18

Puede establecer IsWebBrowserContextMenuEnabled igual a falso. También es probable que desee establecer AllowWebBrowserDrop igual a falso para que no puedan arrastrar una url en la aplicación y que se cargue.

 webBrowser1.IsWebBrowserContextMenuEnabled = false; 
     webBrowser1.AllowWebBrowserDrop = false; 
+3

Funciona para Winforms WebBrowser, no la versión de WPF. –

+0

La versión de WPF parece ser principalmente infrautilizada. Personalmente, termino usando WebBrowser de Forms a través de un control de WindowsFormsHost casi siempre. – Kaganar

+1

@Kaganar El único problema con este enfoque es que está limitado a capacidades de nivel IE 5/6 para el renderizador HTML, a menos que configure entidades de registro para decirle a IE que use una versión posterior como 10/11 cuando su aplicación se conecte en ieframe.dll. – KeithS

1

Establezca la propiedad IsWebBrowserContextMenuEnabled en false.

2

Para WPF ===>

wbBrowser.ContextMenu.IsEnabled = false;

2

para cualquier caso, WinForm o WPF:

 private void WebBrowser_LoadCompleted(object sender, System.Windows.Navigation.NavigationEventArgs e) 
     { 
      ((WebBrowser)sender).InvokeScript("eval", "$(document).contextmenu(function() { return false;  });"); 
} 
+0

Esta es la mejor respuesta, ya que la más elegante (https://stackoverflow.com/a/21699086/592212) tiene problemas (al menos he tenido bloqueos), cuando WebBrowser (WPF) se incluía en la versión personalizada controlar. Requiere jQuery pensamiento. –

+0

funciona perfectamente, sin requerir ningún cambio en la página cargada o en el propio diseño o registro de la aplicación :) – Nitin

0

tengo una solución funcione en mi proyecto (WPF - MVVM):

referencia complemento importante: Microsoft.mshtml

Evento de implementación: webBrowser.LoadCompleted + = webBrowser_LoadCompleted;

using mshtml; 

private void webBrowser_LoadCompleted(object sender, System.Windows.Navigation.NavigationEventArgs e) 
{ 
    object doc = webBrowser.Document; 
    HTMLDocumentEvents2_Event evn2 = doc as HTMLDocumentEvents2_Event; 
    HTMLDocumentEvents_Event evn = doc as HTMLDocumentEvents_Event; 
    evn.oncontextmenu += new HTMLDocumentEvents_oncontextmenuEventHandler(Evn_oncontextmenu); 
    evn2.oncontextmenu += new HTMLDocumentEvents2_oncontextmenuEventHandler(Evn2_oncontextmenu); 
} 

private bool Evn2_oncontextmenu(IHTMLEventObj pEvtObj) 
{ 
    return false; 
} 

private bool Evn_oncontextmenu() 
{ 
    return false; 
} 

Espero que lo ayudes.

Cuestiones relacionadas