webbrowser 里的js函数和C#的函数互相调用方式

1.c#程序里要添加  [System.Runtime.InteropServices.ComVisibleAttribute(true)] 和  webBrowser1.ObjectForScripting = this;

位置:

   
    [System.Runtime.InteropServices.ComVisibleAttribute(true)]
    public partial class Form1 : Form
    {      
        public Form1()
        {
            InitializeComponent();
            refresh();
            string path1 = System.Windows.Forms.Application.StartupPath + @"\" + "PlanMngPage" + @"\home.htm";
            webBrowser1.Navigate(new Uri(path1));
            webBrowser1.ObjectForScripting = this;
        }
 public void MyMessageBox(string message)
        {
            MessageBox.Show(message);
        }

 

2.在JS使用 window.external.引用的窗体的函数();   来引用C#里的函数

  eg:

  <body  onload="window.external.MyMessageBox('javascript访问C#代码')">

 

出处:https://blog.csdn.net/gsch_12/article/details/52224454

 

再给出一个在C#中调用JS的方法

复制代码
  private void button1_Click_1(object sender, EventArgs e)
        {

            if (webBrowser1.Document.GetElementById("a") != null)
            {
                HtmlElement element = webBrowser1.Document.GetElementById("a");
                element.SetAttribute("value", textBox1.Text);
                //textBox1.Text = element.GetAttribute("value");
            }


            webBrowser1.Document.InvokeScript("tt", new object[] { "顶一个" });

        }
复制代码

html代码:

复制代码
<body>
    <input type="text" id="a" />
    <br />
    <input type="button" id="btn" value="test" onclick="tt('haha')" />
    <br />
    <input type="button" id="btn" value="test C#" onclick="Run('--C#')" />
</body>

<script>
    function tt(obj) {
        alert("hello:" + obj);
    }
</script>
<script type="text/javascript" charset="utf-8">
    function Run(str) {
        window.external.ShowMsg(str);
        //alert(str);
    }
</script>
复制代码

 

posted on   jack_Meng  阅读(495)  评论(0编辑  收藏  举报

编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示

喜欢请打赏

扫描二维码打赏

支付宝打赏

主题色彩