visual tutorial studio examples application .net wpf

.net - tutorial - wpf vs winforms



¿Cómo puedo hacer que WPF WebBrowser sea de solo lectura? (5)

¿No puedes simplemente colocar una ventana transparente sobre el control completo y capturar todos los eventos de mouse y teclado allí?

Estoy usando un control WPF WebBrowser para obtener una vista previa de HTML escrito por el usuario.

ejemplo...

Controles WPF TextBox y WebBrowser http://img411.imageshack.us/img411/2296/appbz9.jpg

Pero, ¿cómo hago que el control WebBrowser sea de solo lectura? No quiero que el usuario haga clic en los enlaces que están dentro y navegando fuera de la página de vista previa.

Quiero que mis usuarios creen enlaces. Solo quiero asegurarme de que el panel de "vista previa" es una vista previa de la página correcta.


¿Tal vez puedas atrapar el evento de clic del control y tirarlo antes de que intente navegar hacia el enlace? No estoy seguro si es posible pero intentaré eso.


Capture el evento Navegación del control WebBrowser y establezca la propiedad Cancelar de sus NavigatingCancelEventArgs en True.

Código de Visual Basic ...

Private Sub WebBrowser1_Navigating(...) Handles WebBrowser1.Navigating If WebBrowser1Locked Then e.Cancel = True End If End Sub

Esto requiere una variable booleana de bloqueo global.

Partial Public Class Window1 Dim WebBrowser1Locked As Boolean = True ... End Class

Y bloqueando y desbloqueando para ser envuelto alrededor de la navegación deseada .

WebBrowser1Locked = False WebBrowser1.NavigateToString("...") WebBrowser1Locked = True


Deberá desinfectar la entrada.

No permita etiquetas de anclaje o secuencia de comandos ni sobre atributos. (No sé si puede deshabilitar javascript en el control, pero sería una buena idea hacerlo).


¿Alguien ha intentado con WebBrowserControl.AllowNavigation = False? Creo que esto servirá. Puede habilitar y deshabilitar la propiedad como necesite durante el tiempo de ejecución. Uso un temporizador para desactivar la propiedad con una latencia personalizada, de modo que el documento tenga tiempo para cargar.

Buena suerte, Dan