如何在网页中打开Windows窗体控件?
我正在开发一个网站以及Windows应用程序,我将使用相同的网页窗体应用程序以及网站。
所以我想在点击网页上的链接后调用windows窗体控件。 我想将窗体控件显示为弹出窗体。
这该怎么做? 或者提供与此问题相关的一些文档。
假设您的意思是在WinForms应用程序中托管WebBrowser
类的实例,您可以为其ObjectForScripting
属性提供一个对象。 它提供了一种调用来触发WinForms代码的方法。 例如:
public partial class MyWindowsFormsForm() { public MyWindowsFormsForm() { this.WebBrowserControl.ObjectForScripting = this; } public void DoSomething() { MyOtherForm f = new MyOtherForm(); f.Show(); } }
然后,在您的页面中:
有一个明显的警告,你需要在你的网页中检查以确保window.external.DoSomething
实际存在,所以你的onclick
(在这个例子中)可能会调用一个调用WinForms的帮助方法,或者在页面未在您的应用程序中托管的情况下执行任何操作。
我觉得你很困惑 – 或者我们是。
“我有网页,我为网络应用程序设计,我打算在网页浏览器控件中打开相同的网页,这将放在窗体应用程序的forms之一。如果我打开有forms的表格我的网站页面,我点击了网页上的链接,那时它应该从Windows应用程序打开另一个表单“
所以你知道将被点击的链接? 然后在WebBrowser导航方法中检查它是否是您期望的链接并打开WinForm,例如:
private void webBrowser1_Navigating(object sender, WebBrowserNavigatingEventArgs e) { if (e.Url.Tostring() == "http://localhost/LinkThatOpensFormTwo.htm") { Form2 f = new Form2(); f.Show();
您可以使用WPF浏览器应用程序在Web浏览器(首选Internet Explorer)中显示Windows窗体,该应用程序具有嵌入Windows窗体(或类似.NET组件)的function。
这是一个有效的问题,因为有很多旧版.NET应用程序,公司没有资源为Web HTML 5格式 (使用AJAX等)开发。 这些遗留应用程序可以在Web浏览器中轻松显示,只需要很少的初始设置。
- 在现有的Visual Studio IDE中打开Windows窗体应用程序
- 转到“项目属性”并在“应用程序设置”中将输出类型设置为“类库”
- 添加类型’WPF Browser Application’的新项目,如下所示
- 引用Windows窗体(现为DLL)以及WindowsFormIntegration和System.Windows.Forms的两个重要程序集
- 编写代码以在XAML和XAML.CS页面中调用Windows窗体,如本教程链接中所示。
- 重建解决方案并单击Publish and Save选择File System,如下所示。
- 转到发布文件夹,然后双击扩展名为’.xbap的文件。 它应该在Internet Explorer中自动打开,并具有第一次要求的权限。
- 您应该能够在Web浏览器中显示输出。
如果您希望我创建video教程以实现相同目的, 请告诉我 。