.net网站与Winform窗体的数据交互(JS调用Winform后台方法实现)

前台页面:WebForm2.aspx

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script language="javascript" type="text/javascript">
        //获取WinForm穿过来的值
        function getWinFormValue(winFormValue) {
            document.getElementById("spWinFormValue").innerHTML = winFormValue;
        }
        //调用WinForm里的方法将值传过去
        function SetWinFormValue(WebFormValue) {

            //后台页面的方法 Call
            window.external.Call(WebFormValue);
        }

    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        WinForm传过来的值:<span id="spWinFormValue"></span>
        <br />
        请输入值:<asp:TextBox ID="txtValue" runat="server"></asp:TextBox>
        <asp:Button ID="btn" runat="server" Text="点击我将值传入WinForm" OnClientClick="var v=document.getElementById('txtValue').value;alert(v);SetWinFormValue(v);return false;"
            Width="142px" onclick="btn_Click" />
    </div>
    </form>
</body>
</html>

-------------------------------------------------------------------------------------------------------

Form窗体后台代码:Form2.cs

namespace WindowsFormsApp
{

//申名托管类型,对com是可见的
    [System.Runtime.InteropServices.ComVisible(true)]
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            this.wbWeb.Navigate(string.Format("javascript:getWinFormValue('{0}');void(0);", this.textBox1.Text));
        }

          //前台js调用的方法

        public void Call(string WebFormValue)
        {
            this.label1.Text = WebFormValue;
        }

        private void Form2_Load(object sender, EventArgs e)
        {

         //此窗体可以通过wbweb控件里面的脚本进行访问
          wbWeb.ObjectForScripting = this;
        }
    }
}

此方法要比前文的 使用webservice实现要简便性能要好!

你可能感兴趣的:(WinForm)