欢迎来到天天文库
浏览记录
ID:38183896
大小:19.84 KB
页数:5页
时间:2019-05-24
《Javascript和Winform代码之间实现双向通信》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、js和winform 双向通信 最近工作需要,学习了一下winform内嵌webbrowser控件,然后与htm页面中的javascript交互调用的技术,因此有了这篇心得。总的来说,javascript与winform的code互相调用,和web开发中javascript与服务器端代码通过ajax互相调用有类似之处。下面就用三个例子来说明:一.将WebBrowser控件放置在winform中,然后,写一个Page1.htm,内容如下:1.
2、">2.3.
3、utton>14.15.复制代码我将此Page1.htm显示在WebBrowser中看看,这个不难写,在winform中加上下面一句即可。webBrowser1.Url=newUri("C:\workspace\WindowsFormsApp\WindowsFormsApp\Page1.htm");然后运行,在winform中的webbrowser显示出来这个htm了,点按钮调用javascript函数,弹出alert提示,一切都很正常,没什么稀奇。二.如果我把javascript中的函数挪到winform的c
4、s代码里,htm页面还能调用的到吗?这有点ajax的味道了,在客户端的javascript里如何调用webpage.aspx.cs里的代码,在ajaxpro那时候,是需要在webpage.aspx.cs的代码里注册一下本页供ajax使用,在函数前也要声明一下是ajax函数的。再说回来,如果想调用winform中的代码,也类似的,要给winform设置一下ComVisibleAttribute(true),并给webbrowser控件设置一下webBrowser1.ObjectForScripting属性。1.webBrowser1.Url=new
5、Uri("C:\workspace\WindowsFormsApp\WindowsFormsApp\Page1.htm");2.webBrowser1.ObjectForScripting=this;复制代码其实,如果做的好,可以把这些代码专门归入一个类中,方便管理,这里就变为:webBrowser1.ObjectForScripting=new某类()了;然后,再在winform里写一个函数。 1.publicvoidTest(Stringmessage)2.{3. MessageBox.Show(m
6、essage,"clientcode");4.}复制代码最后,htm里调用时要用window.external前缀一下Test方法名。1.Button复制代码然后再运行,就发现,htm里的onclick事件,居然能调用winform里的code了,真是神奇!完整winform代码如下:1.usingSystem;2.usingSystem.Windows.Forms;3.usingSystem.S
7、ecurity.Permissions;4. 5.namespaceWindowsFormsApp6.{7. [PermissionSet(SecurityAction.Demand,Name="FullTrust")]8. [System.Runtime.InteropServices.ComVisibleAttribute(true)]9. publicpartialclassForm2:Form10. {11. privateWebBrowserwebBrowser1=newWebBrowser();
8、12. publicForm2()13. {14. InitializeCompone
此文档下载收益归作者所有