logo资料库

winform窗体中嵌入网页(DHTML代码和winfrom应用程序交互).docx

第1页 / 共4页
第2页 / 共4页
第3页 / 共4页
第4页 / 共4页
资料共4页,全文预览结束
winform 窗体中嵌入网页(DHTML 代码和 winfrom 应用程序交互) Posted on 2009-08-08 22:44 Charles Chen 阅读(633) 评论(0) 编辑 收藏 网摘 所属分类: RFID(Radio Frequency Identification), JAVASCRIPT, DHTML 在开发 RFID 项目中,看到同事在 winform 中加入网页。界面用 Css 和 JavaScript 做出来的效果很不错, 比直接用 winform 做出来的效果好得多。更何况 winform 在页面表现上没有像网页那样用 css 和 javascript 控制方便。(Winform 项目开发心得). 经查看原来是在 winform 中用了 System.Windows.Forms.WebBrowser 控件来嵌入网页。通过网络 上寻找,原来 WebBrowser 的功能主要是: 可以使用 WebBrowser 控件向 Windows 窗体客户端应用程序添加现有的动态的 HTML(DHTML)应用程序。 在投入大量的开发时间创建基于 DHTML 的控件,并希望利用丰富的 Windows 窗体用户界面功能而无需重 写现有的代码时,该控件十分有用。 使用 WebBrowser 控件,可以通过 ObjectForScripting 和 Document 属性在客户端应用程序代码和 网页脚本代码之间实现双向通信。此外,可以对 WebBrowser 控件进行配置,使 Web 控件可以与应用程序 窗体上的其他控件进行无缝整合,从而隐藏其 DHTML 实现。若要使控件无缝整合,请对所显示页的格式进 行设置,使其背景颜色和视觉样式与窗体的其余部分匹配,然后使用 AllowWebBrowserDrop、 IsWebBrowserContextMenuEnabled 和 WebBrowserShortcutsEnabled 属性禁用标准浏览器功能。 webBrowser1.AllowWebBrowserDrop = false;//将 WebBrowser 控件的 AllowWebBr owserDrop 属性设置为 false,以防止 WebBrowser 控件打开拖放到其上的文件。 webBrowser1.IsWebBrowserContextMenuEnabled = false;//将该控件的 IsWebBrow serContextMenuEnabled 属性设置为 false,以防止 WebBrowser 控件在用户右击它时显 示其快捷菜单. webBrowser1.WebBrowserShortcutsEnabled = false;//将该控件的 WebBrowserSho rtcutsEnabled 属性设置为 false,以防止 WebBrowser 控件响应快捷键。 webBrowser1.ScriptErrorsSuppressed=true;//将该控件的 ScriptErrorsSuppress ed 属性设置为 true,以防止 WebBrowser 控件显示脚本代码问题的错误信息。 WebBrowser 不单单只做一个浏览器的功能吧,既然是 winform 程序,那么就牵涉到网页的程序(主要 是 javascript)和 winform 本身的程序怎样交互呢?一些 Javascript 无法实现的功能,可以通过 javsscript 调用 Winform 里的方法去完成。 1.在窗体的构造函数或者 Load 事件处理程序中设置 ObjectForScripting 属性:下面代码将窗体类自身用于 脚本对象。 (组件对象模型(COM)必须能够访问脚本对象,若要使窗体对 COM 可见,请将 ComVisibleAttribute 属性添 加到窗体类中) webBrowser1.ObjectForScripting = this; 在窗体类自身设置 Attribute [PermissionSet(SecurityAction.Demand, Name="FullTrust")] [System.Runtime.InteropServices.ComVisibleAttribute(true)]
public class Form1 : Form {} 2.在应用程序中实现脚本代码将要调用的 winform 的公共属性和方法。 public string InvokeFormMethod(string message) { MessageBox.Show(message,"Client Code") return "Charles2008" } 3.在脚本代码中使用 window.external 对象访问指定对象的公共属性和方法。 4.在脚本文件中添加 JavaScript 函数(winform 程序将要调用的). 5.使用 WebBrowser 的 Document 属性从客户端应用程序代码访问脚本代码。 this.webBrowser1.Document.InvokeScript("msgalert", new string[] { "Ca lled Javascript code" }); 下面是一个完整的实例: [PermissionSet(SecurityAction.Demand, Name = "FullTrust")] [System.Runtime.InteropServices.ComVisibleAttribute(true)] public partial class Main : Form { public Main() { InitializeComponent(); } private void button4_Click(object sender, EventArgs e) { this.webBrowser1.Navigate(this.textBox1.Text); this.webBrowser1.ObjectForScripting = this; }
#region JavaScript 中调用的方法 public string InvokeFormMethod(string message) { MessageBox.Show(message); return "Charles2008"; } #endregion #region 调用 Javascript 方法 private void button6_Click(object sender, EventArgs e) { this.webBrowser1.Document.InvokeScript("msgalert", new stri ng[] { "Called from client code" }); } #endregion }
运行后的界面如下: 最后希望朋友们提出宝贵的意见,谢谢! Best Regards, Charles Chen msn: gotosunny@msn.com Tag 标签: Winform,WebBrowser,window.external
分享到:
收藏