2009-05-19 8 views
4

Je l'ai googlé, mais est sorti vide. Et le pire, c'est que je sais que c'est possible.Comment contrôler une application à partir de WebBrowser Control?

Quoi qu'il en soit, je développe une application qui utilise le contrôle WebBrowser pour afficher des informations concernant un objet (comme le fait Outlook avec la boîte de dialogue Règles et alertes).

Ma question est comment puis-je faire pour le clic sur un, disons, un lien hypertexte dans le WebBrowser exécuter une fonction dans le formulaire Windows?

Par exemple, dire que j'ai un lien comme this et quand je clique dessus, je veux l'application d'afficher une forme spécifique, comme Outlook ne lorsque vous cliquez sur des liens comme People and Distribution List

Répondre

8

La réponse de ChrisW fonctionnera, mais il y a une autre façon de s'appuyer sur les hyperliens.

En Comicster, j'ai des liens dans mon contrôle WebBrowser comme celui-ci:

<a href="action:FileNew">New Collection</a> 

Et puis en cas Navigating du WebBrowser, j'ai un code pour vérifier si l'utilisateur a essayé de naviguer à une « action: "lien, et l'intercepter:

private void webBrowser1_Navigating(object sender, 
    WebBrowserNavigatingEventArgs e) 
{ 
    if (e.Url.Scheme == "action") 
    { 
     e.Cancel = true; 

     string actionName = e.Url.LocalPath; 
     // do stuff when actionName == "FileNew" etc 
    } 
} 

Avec un peu de code que vous pouvez même analyser les paramètres d'URL et « les passer par » à l'action de votre application hôte, donc je peux faire des choses comme:

<a href="action:EditIssue?ID=1">Edit this issue</a> 

... qui ouvrira un dialogue des propriétés pour le problème avec ID 1.

+0

Est-ce préférable de cette façon pour une raison quelconque? – ChrisW

+1

J'utilise cette méthode parce que j'ai des utilisateurs finaux qui connaissent le HTML de base mais ne connaissent pas javascript, et je les laisse créer leurs propres «skins», de cette manière ils n'ont besoin que de connaître les noms des liens. –

Questions connexes