Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Vous pouvez utiliser le contrôle pour ajouter du WebBrowser code d’application web HTML dynamique (DHTML) existant à vos applications clientes Windows Forms. Cela est utile lorsque vous avez investi beaucoup de temps de développement dans la création de contrôles basés sur DHTML et que vous souhaitez tirer parti des fonctionnalités d’interface utilisateur enrichies de Windows Forms sans avoir à réécrire du code existant.
Le contrôle WebBrowser vous permet d’implémenter une communication bidirectionnelle entre le code de votre application cliente et le code de script de votre page web, via les propriétés ObjectForScripting et Document. En outre, vous pouvez configurer le WebBrowser contrôle afin que vos contrôles Web se mélangent en toute transparence avec d’autres contrôles sur votre formulaire d’application, masquant leur implémentation DHTML. Pour intégrer harmonieusement les contrôles, mettez en forme la page affichée afin que sa couleur d’arrière-plan et son style visuel correspondent au reste du formulaire, et utilisez les propriétés AllowWebBrowserDrop, IsWebBrowserContextMenuEnabled, et WebBrowserShortcutsEnabled pour désactiver les fonctionnalités de navigateur standard.
Pour incorporer DHTML dans votre application Windows Forms
Définissez la propriété WebBrowser du contrôle AllowWebBrowserDrop sur
falsepour empêcher le contrôle WebBrowser d'ouvrir les fichiers déposés sur celui-ci.webBrowser1.AllowWebBrowserDrop = false;webBrowser1.AllowWebBrowserDrop = FalseDéfinissez la propriété IsWebBrowserContextMenuEnabled à
falsepour empêcher le contrôle WebBrowser d’afficher son menu contextuel lorsque l’utilisateur clique dessus avec le bouton droit.webBrowser1.IsWebBrowserContextMenuEnabled = false;webBrowser1.IsWebBrowserContextMenuEnabled = FalseDéfinissez la propriété WebBrowserShortcutsEnabled sur
falsepour empêcher le contrôle WebBrowser de répondre aux touches de raccourci.webBrowser1.WebBrowserShortcutsEnabled = false;webBrowser1.WebBrowserShortcutsEnabled = FalseDéfinissez la propriété dans le ObjectForScripting constructeur du formulaire ou remplacez la OnLoad méthode.
Le code suivant utilise la classe de formulaire elle-même pour l’objet de script.
webBrowser1.ObjectForScripting = new MyScriptObject(this);webBrowser1.ObjectForScripting = New MyScriptObject(Me)Implémentez votre objet de script.
public class MyScriptObject { private Form1 _form; public MyScriptObject(Form1 form) { _form = form; } public void Test(string message) { MessageBox.Show(message, "client code"); } }Public Class MyScriptObject Private _form As Form1 Public Sub New(ByVal form As Form1) _form = form End Sub Public Sub Test(ByVal message As String) MessageBox.Show(message, "client code") End Sub End ClassUtilisez l’objet
window.externaldans votre code de script pour accéder aux propriétés et méthodes publiques de l’objet spécifié.Le code HTML suivant montre comment appeler une méthode sur l’objet de script à partir d’un clic de bouton. Copiez ce code dans l’élément BODY d’un document HTML que vous chargez à l’aide de la méthode Navigate du contrôle ou que vous affectez à la propriété DocumentText du contrôle.
<button onclick="window.external.Test('called from script code')"> call client code from script code </button>Implémentez des fonctions dans votre code de script que votre code d’application utilisera.
L’élément HTML SCRIPT suivant fournit un exemple de fonction. Copiez ce code dans l’élément HEAD d’un document HTML que vous chargez à l’aide de la méthode Navigate du contrôle ou que vous affectez à la propriété DocumentText du contrôle.
<script> function test(message) { alert(message); } </script>Utilisez la Document propriété pour accéder au code de script à partir de votre code d’application cliente.
Par exemple, ajoutez le code suivant à un gestionnaire d’événements de bouton Click .
webBrowser1.Document.InvokeScript("test", new String[] { "called from client code" });webBrowser1.Document.InvokeScript("test", _ New String() {"called from client code"})Lorsque vous avez terminé le débogage de votre DHTML, définissez la propriété du contrôle ScriptErrorsSuppressed sur
trueafin d’empêcher le contrôle WebBrowser d’afficher des messages d’erreur pour les problèmes de code de script.// Uncomment the following line when you are finished debugging. //webBrowser1.ScriptErrorsSuppressed = true;' Uncomment the following line when you are finished debugging. 'webBrowser1.ScriptErrorsSuppressed = True
Exemple :
L’exemple de code complet suivant fournit une application de démonstration que vous pouvez utiliser pour comprendre cette fonctionnalité. Le code HTML est chargé dans le WebBrowser contrôle via la DocumentText propriété au lieu d’être chargé à partir d’un fichier HTML distinct.
using System;
using System.Windows.Forms;
public class Form1 : Form
{
private WebBrowser webBrowser1 = new WebBrowser();
private Button button1 = new Button();
[STAThread]
public static void Main()
{
Application.EnableVisualStyles();
Application.Run(new Form1());
}
public Form1()
{
button1.Text = "call script code from client code";
button1.Dock = DockStyle.Top;
button1.Click += new EventHandler(button1_Click);
webBrowser1.Dock = DockStyle.Fill;
Controls.Add(webBrowser1);
Controls.Add(button1);
}
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
webBrowser1.AllowWebBrowserDrop = false;
webBrowser1.IsWebBrowserContextMenuEnabled = false;
webBrowser1.WebBrowserShortcutsEnabled = false;
webBrowser1.ObjectForScripting = new MyScriptObject(this);
// Uncomment the following line when you are finished debugging.
//webBrowser1.ScriptErrorsSuppressed = true;
webBrowser1.DocumentText =
"<html><head><script>" +
"function test(message) { alert(message); }" +
"</script></head><body><button " +
"onclick=\"window.external.Test('called from script code')\">" +
"call client code from script code</button>" +
"</body></html>";
}
private void button1_Click(object sender, EventArgs e)
{
webBrowser1.Document.InvokeScript("test",
new String[] { "called from client code" });
}
}
public class MyScriptObject
{
private Form1 _form;
public MyScriptObject(Form1 form)
{
_form = form;
}
public void Test(string message)
{
MessageBox.Show(message, "client code");
}
}
Imports System.Windows.Forms
Public Class Form1
Inherits Form
Private webBrowser1 As New WebBrowser()
Private WithEvents button1 As New Button()
<STAThread()> _
Public Shared Sub Main()
Application.EnableVisualStyles()
Application.Run(New Form1())
End Sub
Public Sub New()
button1.Text = "call script code from client code"
button1.Dock = DockStyle.Top
webBrowser1.Dock = DockStyle.Fill
Controls.Add(webBrowser1)
Controls.Add(button1)
End Sub
Protected Overrides Sub OnLoad(e As EventArgs)
MyBase.OnLoad(e)
webBrowser1.AllowWebBrowserDrop = False
webBrowser1.IsWebBrowserContextMenuEnabled = False
webBrowser1.WebBrowserShortcutsEnabled = False
webBrowser1.ObjectForScripting = New MyScriptObject(Me)
' Uncomment the following line when you are finished debugging.
'webBrowser1.ScriptErrorsSuppressed = True
webBrowser1.DocumentText = _
"<html><head><script>" & _
"function test(message) { alert(message); }" & _
"</script></head><body><button " & _
"onclick=""window.external.Test('called from script code')"" > " & _
"call client code from script code</button>" & _
"</body></html>"
End Sub
Private Sub button1_Click(ByVal sender As Object, ByVal e As EventArgs) _
Handles button1.Click
webBrowser1.Document.InvokeScript("test", _
New String() {"called from client code"})
End Sub
End Class
Public Class MyScriptObject
Private _form As Form1
Public Sub New(ByVal form As Form1)
_form = form
End Sub
Public Sub Test(ByVal message As String)
MessageBox.Show(message, "client code")
End Sub
End Class
Compilation du code
Ce code nécessite :
- Références aux assemblies System et System.Windows.Forms.
Voir aussi
.NET Desktop feedback