C# 与 js的相与调用


新建一个window窗体应用程序

引用 com 的 Microsoft Script Control

拖二个textbox,一个button

双击run button.

 

将Form1换成:

    [System.Runtime.InteropServices.ComVisibleAttribute(true)]//让com可以调用Form1
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            init();
        }
        #region msscript
        MSScriptControl.ScriptControlClass sc;
        void init()
        {
            sc = new MSScriptControl.ScriptControlClass();
            sc.Language = "javascript";//设置语言
            sc.AllowUI = true;//可ui交互
            sc.SitehWnd = this.Handle.ToInt32();//交互时,在本窗口之上显示
            //添加對象
            sc.AddObject("window", this, false);//window 在js中的变量名,this,添加的对象
            //添加代碼
            sc.AddCode("function alert(message){window.alert(message);}");//添加js方法alert,做用是调用C#中Form1.alert方法
        }
        //显示信息
        public void alert(string mes)
        {
            MessageBox.Show(mes);
        }
        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                sc.AddCode(textBox1.Text);
                object obj = null;
                StringBuilder sb = new StringBuilder();
                if (obj != null)
                    sb.AppendLine(obj.ToString());
                //显示代码的所有方法
                if (sc.Procedures != null)
                    for (int i = 1; i <= sc.Procedures.Count; i++)
                    {
                        MSScriptControl.Procedure m = sc.Procedures[i];
                        sb.Append(m.Name).Append(":").Append(m.GetType()).AppendLine();
                    }
                textBox2.Text = sb.ToString();
            }
            catch (Exception ee)
            {
                MessageBox.Show(ee.Message);
            }
        }
        #endregion msscript
    }

效果:

 

C#中调用js,将方法换成,点下run后,下面的textbox显示结果12

        private void button1_Click(object sender, EventArgs e)
        {
            sc.AddCode("function sum(one,two){return one+two;}");//添加代码
            object[] para = new object[] { 1,11};//参数
            object obj= sc.Run("sum",ref para);//调用js的sum方法
            textBox2.Text = obj.ToString();
        }


 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值