WinForm下的开发WebBrowser,js函数与Winform函数互调

来源:互联网 发布:js字符串大小写转换 编辑:程序博客网 时间:2024/04/28 20:34
WinForm下的开发WebBrowser,js函数与Winform函数互调

想在窗体下实现浏览器的效果,那使用WebBrowser吧,微软的控件,使用起来效果还可以。这样方便用户使用,以免从窗体在打开浏览器,这过程很麻烦,用户也很烦。并且在WebBrowser下将报表用html静态网页的形式实现,那效果岂不是很好,比水晶报表的性能,那不知好哪去了。好了,废话少说,下面介绍WebBrowser在窗体上实现js函数与WinForm互调。

上面这个是我的程序结构,我的html静态网页在html文件夹中的myhtml.htm,WebBrowser在frmReport窗体中,myhtml.htm代码如下:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><title></title>        <script type="text/javascript">            function myclose() {                                window.external.btn_Click();            }            function getWinFromMessage() {                var str = document.getElementById('txtMessage').value;                str = window.external.getMessage(str);                alert('JS get return Value:'+str);            }            function jsMethod(msg) {                alert(msg);                return 'js value';            }        </script></head><body>        <input type="text" id="txtMessage"/>         <input type="button" id="btnMessage" value="确定" onclick='getWinFromMessage()' />             <input type="button" id="btnClose" value="关闭" onclick='myclose()' />     </body></html>
上面的代码中的window.external.getMessage()这是用来调用Winform下的函数,getMessage()就是winform下的函数,这是来获取窗体函数返回信息的。还有myclose()函数里面的btn_Click()也是winform下的函数,它的功能是关闭Winform窗体,但是,我们是通过点击前台网页中的关闭按钮来实现。这就实现js调用这些函数来操作窗体。
下面是frmReport下的代码:
    [PermissionSet(SecurityAction.Demand, Name = "FullTrust")]    [System.Runtime.InteropServices.ComVisibleAttribute(true)]     public partial class frmReport : Form    {        public frmReport()        {            InitializeComponent();        }        private void frmReport_Load(object sender, EventArgs e)        {            string path = Application.StartupPath;            path = path.Substring(0,path.Length-9);            string filename = path + @"html\myhtml.htm";            //string filetxt=readHtm(filename);            this.webBrowser.Navigate(path+@"html\myhtml.htm");            //if (filetxt != String.Empty)             //   webBrowser.DocumentText = filetxt;            webBrowser.ObjectForScripting = this;                 }        //调用Js        private void btnJs_Click(object sender, EventArgs e)        {            string s = webBrowser.Document.InvokeScript("jsMethod",new string[]{"jsMethod"}).ToString() ;            MessageBox.Show("Winform get Js Value:"+s);        }         //被js调用        public void btn_Click()        {            this.Close();        }        //被js调用        public string getMessage(string str)        {            return "WinForm Say:" + str;        }    }
btnJs_Click是窗体下一个按钮,实现调用js的功能。代码就这么多,简单实现下,效果还是不错的。

原创粉丝点击