Winform启动隐藏,WebBrowser交互JS

时间:2014-06-11 23:04:40   收藏:0   阅读:1058

  一、启动隐藏  

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

bubuko.com,布布扣
 private void Form1_Load(object sender, EventArgs e)
        {
            webBrowser1.ObjectForScripting = this;
            WindowState = FormWindowState.Minimized;
            Opacity = 0;
            ShowInTaskbar = false;
        }
bubuko.com,布布扣

 在notifyIcon点击的时候触发:

bubuko.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;
            }
        }
bubuko.com,布布扣

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

二、JS与C# 交互

  1.C#调用webbrowser中的JS

  javascript方法:

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

传递参数必须是objects数组。

bubuko.com,布布扣
        /// <summary>
         /// 调用JS的方法设置一些信息
        /// </summary>
        /// <param name="o">The o.</param>
        /// <param name="f">The f.</param>
        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];
bubuko.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中的方法:

bubuko.com,布布扣
        /// <summary>
        /// 安装
        /// </summary>
        public void RunInstaller()
        { 
           _autoUpdater.RunInstaller();
        }
      public void CheckUpdate()
        {
       //........
       }
bubuko.com,布布扣

 

 

 

 

 

Winform启动隐藏,WebBrowser交互JS,布布扣,bubuko.com

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!