我正在开发一个网站以及Windows应用程序,我将使用相同的网页进行Windows窗体应用程序以及网站。
所以我想在点击网页上的链接后调用windows窗体控件。我想将窗体控件显示为弹出窗口。
怎么做?或者提供一些与此问题相关的文档。
答案 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浏览器中显示,而只需进行少量的初始设置即可。
如果您要我创建视频教程来实现相同目标,请告诉我。