/// 获取当前浏览器 /// <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); }
/// 手动关闭当前页面 /// <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 { } }
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); }
/// 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(); } }