如何在网页中打开Windows窗体控件?

时间:2012-02-06 08:25:16

标签: c# winforms web-applications

我正在开发一个网站以及Windows应用程序,我将使用相同的网页进行Windows窗体应用程序以及网站。

所以我想在点击网页上的链接后调用windows窗体控件。我想将窗体控件显示为弹出窗口。

怎么做?或者提供一些与此问题相关的文档。

3 个答案:

答案 0 :(得分:1)

假设您的意思是在WinForms应用程序中托管WebBrowser类的实例,您可以为其ObjectForScripting属性提供一个对象。它提供了一种调用来触发WinForms代码的方法。例如:

public partial class MyWindowsFormsForm()
{
    public MyWindowsFormsForm()
    {
        this.WebBrowserControl.ObjectForScripting = this;
    }

    public void DoSomething()
    {
        MyOtherForm f = new MyOtherForm();
        f.Show();
    }
}

然后,在您的页面中:

<script language="javascript" type="text/javascript">
function loadOtherForm()
{
    if (RunningInWinFormsApplication())
    {
        window.external.DoSomething();
    }
    else
    {
        // Code to do something when NOT running inside the WinForms app could go here
    }
}

function RunningInWinFormsApplication()
{
   return (window.external.DoSomething != undefined);
}
</script>

<button onclick="loadOtherForm();">Call into WinForms app</button>

显而易见的警告是,您需要在网页中设置代码以检查window.external.DoSomething是否确实在那里,因此您的onclick(在此示例中)可能会调用帮助程序调用WinForms的方法,或者在页面未在您的应用程序中托管时执行任何操作的方法。

答案 1 :(得分:0)

我觉得你很困惑 - 或者我们是。

  

“我有网页,我为网络应用程序设计,我要去   在将要放置的Web浏览器控件中打开相同的Web页面   在窗体形式的应用程序之一。如果我打开表格   这是我的网站页面,我点击了链接   然后那个网页应该打开另一个表单   Windows应用程序“

您知道要点击的链接吗?然后在WebBrowser Navigating Method 检查它是否是您期望的链接并打开WinForm,例如:

private void webBrowser1_Navigating(object sender, WebBrowserNavigatingEventArgs e)
{
if (e.Url.Tostring() == "http://localhost/LinkThatOpensFormTwo.htm")
{
Form2 f = new Form2();
f.Show();

答案 2 :(得分:0)

您可以使用WPF浏览器应用程序在Web浏览器(首选Internet Explorer)中显示Windows窗体,该程序具有嵌入Windows窗体(或类似.NET组件的功能)的功能。

这是一个有效的问题,因为有很多旧版.NET应用程序,这些公司没有资源来开发Web HTML 5格式(使用AJAX等)。这样的遗留应用程序可以轻松地在Web浏览器中显示,而只需进行少量的初始设置即可。

  1. 在现有的Visual Studio IDE中打开Windows窗体应用程序
  2. 转到项目属性,然后在“应用程序设置”中将输出类型设置为“类库” enter image description here
  3. 添加“ WPF浏览器应用程序”类型的新项目,如下所示enter image description here
  4. 引用Windows窗体(现在为DLL)以及 WindowsFormIntegration System.Windows.Forms
  5. 的两个重要程序集
  6. 编写代码以在XAML和XAML.CS页面中调用Windows窗体,如in this tutorial link所示。
  7. 重建解决方案,然后单击“发布并保存”,选择文件系统,如下所示。 enter image description here
  8. 转到“发布文件夹”,然后双击扩展名为'.xbap的文件。它应该在Internet Explorer中自动打开,并具有首次询问权限。
  9. 您应该能够在Web浏览器中显示输出。 enter image description here

如果您要我创建视频教程来实现相同目标,请告诉我