2008-12-19 5 views
3

J'utilise un contrôle WPF WebBrowser pour prévisualiser le code HTML saisi par l'utilisateur.Comment rendre un WPF WebBrowser en lecture seule?

exemple ...

WPF TextBox and WebBrowser controls http://img411.imageshack.us/img411/2296/appbz9.jpg

Mais, comment puis-je fait le contrôle WebBrowser en lecture seule? Je ne veux pas que l'utilisateur clique sur des liens et navigue loin de la page d'aperçu.

Je veux que mes utilisateurs créent des liens. Je veux juste m'assurer que le volet "aperçu" est un aperçu de la bonne page.

Répondre

7

capturer l'événement Navigating du Contrôle WebBrowser et définissez la propriété Cancel de son NavigatingCancelEventArgs sur True

Code Visual Basic ...

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

Cela nécessite une variable booléenne de verrouillage global.

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

et le verrouillage et le déverrouillage à être enroulé autour de la navigation souhaitée.

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

Vous devrez nettoyer l'entrée. Ne pas autoriser les balises d'ancrage ou de script ou les attributs. Ne pas autoriser les balises d'ancrage ou de script. (Je ne sais pas si vous pouvez désactiver javascript sur le contrôle, mais ce serait une bonne idée.)

+0

Cela ne fonctionnera pas pour mon but. Je veux que mes utilisateurs créent des liens. Je veux juste m'assurer que le volet "aperçu" est un aperçu de la bonne page. –

+0

Oh, je vois. C'est tout à fait le cornichon. – EndangeredMassa

6

Vous ne pouvez pas simplement placer un transparent window sur l'ensemble du contrôle et y capturer tous les événements de la souris et du clavier?

2

peut-être que vous pouvez attraper l'événement click du contrôle et le jeter avant d'essayer de naviguer vers le lien? Je ne sais pas s'il est possible, mais je voudrais essayer.

+0

Le contrôle WebBrowser n'a pas d'événement Click, mais plutôt un événement de navigation. Voir ma réponse pour une solution complète. –

-1

Avez quelqu'un a essayé avec WebBrowserControl.AllowNavigation = False Je pense que cela va faire. Vous pouvez activer et désactiver la propriété selon vos besoins pendant l'exécution. J'utilise un minuteur pour désactiver la propriété avec une latence personnalisée, de sorte que le document a le temps de charger.

Bonne chance, Dan

+2

Le problème est que le WPBr WebBrowser n'a pas AllowNavigation (ou un tas d'autres choses) comme la version de WinForms. – Michael

Questions connexes