Interface web sans winforms

Contenu du snippet

Bonjour à tous.

En tant que webmaster, je me suis interressé à la réalisation de programmes en C# en utilisant uniquement un contrôle Internet Explorer (WebBrowser). En effet, de nos jours il est beaucoup plus aisé de réaliser une interface "spéciale" en HTML plutôt qu'avec des contrôles Windows. En partant de ce constat, il nous manque la méthode pour faire intéragir C# et IE. En effet, le but de la manoeuvre est de créer divers Liens HTML et d'appeler des méthodes issues du programme en C# à partir de ces liens, et aussi de pouvoir faire des appels Javascript depuis C#.

---------------------------------
INVOKE de HTML(Javascript) à C#
---------------------------------

La solution se fait en 3 étapes:
-Déclarer la classe ( celle dont les méthodes seront appelés du WebBrowser) avec l'attribue [ComVisible] à true
-Donner la valeur "this" à la propriété ObjectForScripting de l'objet WebBrowser
-Utiliser window.external.NomFonction(); pour appeler les focntions de C# via HTML.

---------------------------------
INVOKE de C# à HTML(Javascript)
---------------------------------

Une seule étape suffit !

- Utiliser la méthode InvokeScript de l'objet Document contenu dans l'objet WebBrowser
->C#

Et bien voilà, maintenant vous avez tous les outils pour réaliser des logiciels avec un minimum de WinForms.
Ce n'est pas très compliqué et ça promet !

Source / Exemple :


//---------------------------------
//INVOKE de HTML(Javascript) à C#
//---------------------------------
//->C#

using System.Runtime.InteropServices;

[ComVisible(true)]
class Form1
{
   System.Windows.Forms.WebBrowser WebBrowser1;

   Form1()
   {
        InitializeComponent();
        this.WebBrowser1.ObjectForScripting = this;
   }
   public void Test()
   {
      MessaegBox.Show("Coucou je suis C#!");
   }

}

//->HTML (Javscript)

<a href="javascript:window.external.Test();">Appel à C#</a>

//---------------------------------
//INVOKE de C# à HTML(Javascript)
//---------------------------------
//->C#

//passage de 2 arguments à la fonction coucou
Object[] objArray = new Object[1];
objArray[0] = (Object)"salut";
objArray[1] = (Object)"ça va?";
object result = WebBrowser.Document.InvokeScript("coucou")

//->JavaScript

function coucou(param1,param2)
{
	alert(param1 + param2);
   return true;
}

Conclusion :


Comme à ma grande habitude je ne mets pas les sources car tout est dans le tutorial.

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.