Winform启动隐藏,WebBrowser交互JS

2020-12-13 02:31

阅读:398

标签:winform   style   class   blog   code   java   

  一、启动隐藏  

  Winform比较奇怪,Load的时候设置Visiable=false,无效。webBrowser_DocumentCompleted之后调用hide隐藏了窗体,但是在notifyIcon调用show也不能打开窗体。各种奇葩问题。最后stackOverFlow上找到答案。设置透明度,和取消显示在任务栏。

soscw.com,搜素材
 private void Form1_Load(object sender, EventArgs e)
        {
            webBrowser1.ObjectForScripting = this;
            WindowState = FormWindowState.Minimized;
            Opacity = 0;
            ShowInTaskbar = false;
        }
soscw.com,搜素材

 在notifyIcon点击的时候触发:

soscw.com,搜素材
 private void SCADAnotifyIcon_Click(object sender, EventArgs e)
        {
            if (WindowState != FormWindowState.Normal||Visible==false)
            {
                WindowState = FormWindowState.Normal;
                Visible = true;
                Opacity =1;
                ShowInTaskbar = true;
            }
            else
            {
                Visible = false;
            }
        }
soscw.com,搜素材

达到想要的效果,启动后隐藏,只出现在托盘中。托盘再打开。

二、JS与C# 交互

  1.C#调用webbrowser中的JS

  javascript方法:

      function localversion(version) {
            $("#loadedversion").html(version);
        }
        function setName(name) {
            $("#pname").html(name);
        }

传递参数必须是objects数组。

soscw.com,搜素材
        /// 
         /// 调用JS的方法设置一些信息
        /// 
        /// The o.
        /// The f.
        private void InvokeJs(object o, string f)
        {
            _objects[0] = o;
            if (webBrowser1.Document != null) 
                webBrowser1.Document.InvokeScript(f, _objects);
        }
        private readonly object[] _objects = new object[1];
soscw.com,搜素材

调用的时候:

    private void CheckLocal()
        {
            InvokeJs(ConstFile.ROOLBACKFILE, "setName");
            InvokeJs(_autoUpdater.GetLoadedVersion(), "localversion");
        }

 2.js调用C#。

 需要在方法或者类上面标记:

   [System.Runtime.InteropServices.ComVisible(true)]

在html页面中直接对应过来即可。

 button id="checkUpdate" onclick="window.external.CheckUpdate()" class="btn btn-success btn-small">检查更新button>
button id="installer" class="btn btn-info  btn-small" onclick="window.external.RunInstaller()"  >安装button>

这两个按钮会分别触发Form中的方法:

soscw.com,搜素材
        /// 
        /// 安装
        /// 
        public void RunInstaller()
        { 
           _autoUpdater.RunInstaller();
        }
      public void CheckUpdate()
        {
       //........
       }
soscw.com,搜素材

 

 

 

 

 

Winform启动隐藏,WebBrowser交互JS,搜素材,soscw.com

Winform启动隐藏,WebBrowser交互JS

标签:winform   style   class   blog   code   java   

原文地址:http://www.cnblogs.com/stoneniqiu/p/3772326.html


评论


亲,登录后才可以留言!