From 1fe35d6424539be97148f09179929cf5eacee048 Mon Sep 17 00:00:00 2001 From: Igor Velikorossov Date: Thu, 28 Jan 2021 09:21:32 +1100 Subject: [PATCH] Update webbrowser sample (#173) * Update webbrowser sample As per suggestions https://github.com/dotnet/winforms/issues/4443#issuecomment-759333446 Resolves dotnet/winforms#4443 * fixup! Update webbrowser sample * fixup! Update webbrowser sample * Update dotnet-desktop-guide/framework/winforms/controls/implement-two-way-com-between-dhtml-and-client.md Co-authored-by: Andy De George <67293991+adegeo@users.noreply.github.com> Co-authored-by: Andy De George <67293991+adegeo@users.noreply.github.com> --- ...nt-two-way-com-between-dhtml-and-client.md | 9 ++--- .../CS/form1.cs | 34 ++++++++++++------- .../CS/sample.csproj | 9 +++++ .../vb/form1.vb | 30 +++++++++------- .../vb/sample.vbproj | 12 +++++++ 5 files changed, 62 insertions(+), 32 deletions(-) create mode 100644 dotnet-desktop-guide/samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.WebBrowser.ObjectForScripting/CS/sample.csproj create mode 100644 dotnet-desktop-guide/samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.WebBrowser.ObjectForScripting/vb/sample.vbproj diff --git a/dotnet-desktop-guide/framework/winforms/controls/implement-two-way-com-between-dhtml-and-client.md b/dotnet-desktop-guide/framework/winforms/controls/implement-two-way-com-between-dhtml-and-client.md index f8384f3..094ec6c 100644 --- a/dotnet-desktop-guide/framework/winforms/controls/implement-two-way-com-between-dhtml-and-client.md +++ b/dotnet-desktop-guide/framework/winforms/controls/implement-two-way-com-between-dhtml-and-client.md @@ -38,19 +38,14 @@ The control lets you implement two-way co [!code-csharp[System.Windows.Forms.WebBrowser.ObjectForScripting#3](~/samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.WebBrowser.ObjectForScripting/CS/form1.cs#3)] [!code-vb[System.Windows.Forms.WebBrowser.ObjectForScripting#3](~/samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.WebBrowser.ObjectForScripting/vb/form1.vb#3)] -4. Set the property in the form's constructor or a event handler. +4. Set the property in the form's constructor or override the method. The following code uses the form class itself for the scripting object. - > [!NOTE] - > Component Object Model (COM) must be able to access the scripting object. To make your form visible to COM, add the attribute to your form class. - [!code-csharp[System.Windows.Forms.WebBrowser.ObjectForScripting#4](~/samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.WebBrowser.ObjectForScripting/CS/form1.cs#4)] [!code-vb[System.Windows.Forms.WebBrowser.ObjectForScripting#4](~/samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.WebBrowser.ObjectForScripting/vb/form1.vb#4)] -5. Implement public properties or methods in your application code that your script code will use. - - For example, if you use the form class for the scripting object, add the following code to your form class. +5. Implement your scripting object. [!code-csharp[System.Windows.Forms.WebBrowser.ObjectForScripting#5](~/samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.WebBrowser.ObjectForScripting/CS/form1.cs#5)] [!code-vb[System.Windows.Forms.WebBrowser.ObjectForScripting#5](~/samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.WebBrowser.ObjectForScripting/vb/form1.vb#5)] diff --git a/dotnet-desktop-guide/samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.WebBrowser.ObjectForScripting/CS/form1.cs b/dotnet-desktop-guide/samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.WebBrowser.ObjectForScripting/CS/form1.cs index 81edf59..6609d23 100644 --- a/dotnet-desktop-guide/samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.WebBrowser.ObjectForScripting/CS/form1.cs +++ b/dotnet-desktop-guide/samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.WebBrowser.ObjectForScripting/CS/form1.cs @@ -1,10 +1,7 @@ // using System; using System.Windows.Forms; -using System.Security.Permissions; -[PermissionSet(SecurityAction.Demand, Name="FullTrust")] -[System.Runtime.InteropServices.ComVisibleAttribute(true)] public class Form1 : Form { private WebBrowser webBrowser1 = new WebBrowser(); @@ -25,11 +22,12 @@ public class Form1 : Form webBrowser1.Dock = DockStyle.Fill; Controls.Add(webBrowser1); Controls.Add(button1); - Load += new EventHandler(Form1_Load); } - private void Form1_Load(object sender, EventArgs e) + protected override void OnLoad(EventArgs e) { + base.OnLoad(e); + // webBrowser1.AllowWebBrowserDrop = false; // @@ -40,7 +38,7 @@ public class Form1 : Form webBrowser1.WebBrowserShortcutsEnabled = false; // // - webBrowser1.ObjectForScripting = this; + webBrowser1.ObjectForScripting = new MyScriptObject(this); // // // Uncomment the following line when you are finished debugging. @@ -56,13 +54,6 @@ public class Form1 : Form ""; } - // - public void Test(String message) - { - MessageBox.Show(message, "client code"); - } - // - private void button1_Click(object sender, EventArgs e) { // @@ -71,4 +62,21 @@ public class Form1 : Form // } } + +// +public class MyScriptObject +{ + private Form1 _form; + + public MyScriptObject(Form1 form) + { + _form = form; + } + + public void Test(string message) + { + MessageBox.Show(message, "client code"); + } +} +// // \ No newline at end of file diff --git a/dotnet-desktop-guide/samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.WebBrowser.ObjectForScripting/CS/sample.csproj b/dotnet-desktop-guide/samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.WebBrowser.ObjectForScripting/CS/sample.csproj new file mode 100644 index 0000000..335198c --- /dev/null +++ b/dotnet-desktop-guide/samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.WebBrowser.ObjectForScripting/CS/sample.csproj @@ -0,0 +1,9 @@ + + + + WinExe + net472;netcoreapp3.1;net5.0-windows + true + + + \ No newline at end of file diff --git a/dotnet-desktop-guide/samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.WebBrowser.ObjectForScripting/vb/form1.vb b/dotnet-desktop-guide/samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.WebBrowser.ObjectForScripting/vb/form1.vb index 098a410..ec9576c 100644 --- a/dotnet-desktop-guide/samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.WebBrowser.ObjectForScripting/vb/form1.vb +++ b/dotnet-desktop-guide/samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.WebBrowser.ObjectForScripting/vb/form1.vb @@ -1,9 +1,6 @@ ' Imports System.Windows.Forms -Imports System.Security.Permissions - _ - _ Public Class Form1 Inherits Form @@ -24,8 +21,8 @@ Public Class Form1 Controls.Add(button1) End Sub - Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) _ - Handles Me.Load + Protected Overrides Sub OnLoad(e As EventArgs) + MyBase.OnLoad(e) ' webBrowser1.AllowWebBrowserDrop = False @@ -37,7 +34,7 @@ Public Class Form1 webBrowser1.WebBrowserShortcutsEnabled = False ' ' - webBrowser1.ObjectForScripting = Me + webBrowser1.ObjectForScripting = New MyScriptObject(Me) ' ' ' Uncomment the following line when you are finished debugging. @@ -53,12 +50,6 @@ Public Class Form1 "" End Sub - ' - Public Sub Test(ByVal message As String) - MessageBox.Show(message, "client code") - End Sub - ' - Private Sub button1_Click(ByVal sender As Object, ByVal e As EventArgs) _ Handles button1.Click @@ -70,4 +61,19 @@ Public Class Form1 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 +' ' \ No newline at end of file diff --git a/dotnet-desktop-guide/samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.WebBrowser.ObjectForScripting/vb/sample.vbproj b/dotnet-desktop-guide/samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.WebBrowser.ObjectForScripting/vb/sample.vbproj new file mode 100644 index 0000000..63052bc --- /dev/null +++ b/dotnet-desktop-guide/samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.WebBrowser.ObjectForScripting/vb/sample.vbproj @@ -0,0 +1,12 @@ + + + + WinExe + net472;net5.0-windows + sample + true + WindowsForms + sample.Form1 + + + \ No newline at end of file