Пример #1
0
        /// 获取当前浏览器
        /// <summary>
        /// 获取当前浏览器
        /// </summary>
        /// <returns>当前浏览器</returns>
        private WebBrowser GetCurrentBrowser()
        {
            WebBrowser currentBrowser = null;

            try
            {
                //先取当前页
                currentBrowser = tabControl1.SelectedTab.Controls[0] as WebBrowser;
                if (currentBrowser == null)
                {
                    //没有的话取最后一页
                    //只有一页的时候取第一页
                    TabPage lastp = null;
                    foreach (TabPage t in tabControl1.TabPages)
                    {
                        if (!WinformPages.Contains(t.Name))
                        {
                            lastp = t;
                        }
                    }
                    currentBrowser = lastp.Controls[0] as WebBrowser;
                }
            }
            catch { }
            return(currentBrowser);
        }
Пример #2
0
        /// 手动关闭当前页面
        /// <summary>
        /// 手动关闭当前页面
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void MainTabControl_MouseDown(object sender, MouseEventArgs e)
        {
            try
            {
                if (e.Button == MouseButtons.Left)
                {
                    int x = e.X, y = e.Y;
                    //计算关闭区域
                    Rectangle myTabRect = this.tabControl1.GetTabRect(this.tabControl1.SelectedIndex);
                    myTabRect.Offset(myTabRect.Width - (CLOSE_SIZE + 3), 2);
                    myTabRect.Width  = CLOSE_SIZE;
                    myTabRect.Height = CLOSE_SIZE;
                    //如果鼠标在区域内就关闭选项卡
                    bool isClose        = x > myTabRect.X && x <myTabRect.Right &&
                                                                y> myTabRect.Y && y < myTabRect.Bottom;

                    if (isClose == true && !IsCurrentWindowIsCallingTel())
                    {
                        //仅仅剩下一个tab时返回
                        if (GetTabControlTabPagesCount() <= 1)
                        {
                            //取消代理
                            RefreshIESettings("");
                            GetCurrentBrowser().Navigate(DefaultURL);
                        }
                        else
                        {
                            if (WinformPages.Contains(this.tabControl1.SelectedTab.Name))
                            {
                                //关闭winform页面
                            }
                            else
                            {
                                WebBrowser mybor = GetCurrentBrowser();
                                //释放资源
                                mybor.Dispose();
                                mybor.Controls.Clear();
                            }
                            TabPage page = this.tabControl1.SelectedTab;
                            this.tabControl1.TabPages.Remove(page);
                            bool flag = alowReceiveCallMsg_WebpageIDList.Remove(page.Name);
                            Loger.Log4Net.Info("[MainUI] 手动关闭页面=" + page.Name + ",并且移除alowReceiveCallMsg_WebpageIDList[允许给iframe子页面推送话务消息列表]中的PageID:" + page.Name + ",结果=" + flag);
                            ShowTabPagesLog();
                            page.Dispose();
                            GC.Collect();
                        }
                    }
                    this.GetCurrentBrowser().Document.Window.Focus();
                    IHTMLWindow2 win = (IHTMLWindow2)this.GetCurrentBrowser().Document.Window.DomWindow;
                    win.focus();
                }
            }
            catch
            {
            }
        }
Пример #3
0
        private int GetTabControlTabPagesCount()
        {
            int a = tabControl1.TabPages.Count;

            //排除winform页面
            foreach (TabPage t in tabControl1.TabPages)
            {
                if (WinformPages.Contains(t.Name))
                {
                    //当前页面中包含监控页面,所以可用数量-1
                    a = a - 1;
                }
            }
            Loger.Log4Net.Info("[MainUI] [GetTabControlTabPagesCount] 可用页面数量=" + a);
            return(a);
        }
Пример #4
0
        /// web端关闭当前tab
        /// <summary>
        /// web端关闭当前tab
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void WebClosePageEvent(string webpageid)
        {
            if (webpageid == CurrentOutBoundTabPageName)
            {
                Loger.Log4Net.Info("[MainUI] [WebClosePageEvent] 当前窗口有电话正在通话,无法关闭=" + webpageid);
                return;
            }
            //仅仅剩下一个tab时返回
            if (GetTabControlTabPagesCount() <= 1)
            {
                //取消代理
                RefreshIESettings("");
                GetCurrentBrowser().Navigate(DefaultURL);
            }
            else
            {
                if (WinformPages.Contains(webpageid))
                {
                    //关闭winform页面
                    //无操作
                }
                else
                {
                    WebBrowser mybor = GetWebBrowserByWebPageID(webpageid);
                    //释放资源
                    mybor.Dispose();
                    mybor.Controls.Clear();
                }

                TabPage page = GetTabPageByWebPageID(webpageid);
                this.tabControl1.TabPages.Remove(page);
                page.Dispose();
                bool flag = alowReceiveCallMsg_WebpageIDList.Remove(page.Name);
                Loger.Log4Net.Info("[MainUI] [WebClosePageEvent] 网站关闭页面=" + webpageid + ",并且移除alowReceiveCallMsg_WebpageIDList[允许给iframe子页面推送话务消息列表]中的PageID:" + page.Name + ",结果=" + flag);
                ShowTabPagesLog();
            }
        }