public void InternalOnMouseDown(MouseEventArgs e) { HideToolTip(); if(this.HasNavigationBox && m_TabSystemBox.Visible && m_TabSystemBox.DisplayRectangle.Contains(e.X,e.Y)) { m_TabSystemBox.MouseDown(e); return; } _MouseDownPoint = new Point(e.X, e.Y); if(e.Button==MouseButtons.Left) { Rectangle rSelected=this.GetSelectedTabRectangle(); foreach(TabItem tab in m_Tabs) { if((tab.DisplayRectangle.Contains(new Point(e.X,e.Y)) || rSelected.Contains(e.X,e.Y)) && tab.Visible) { TabItem newSelected=tab; if(rSelected.Contains(e.X,e.Y)) newSelected=m_SelectedTab; if(m_SelectedTab!=newSelected) { TabItem oldTab=m_SelectedTab; if(SelectedTabChanging!=null) { TabStripTabChangingEventArgs eventData=new TabStripTabChangingEventArgs(m_SelectedTab,newSelected,eEventSource.Mouse); SelectedTabChanging(this,eventData); if(eventData.Cancel) break; } this.InvokeBeforeTabDisplay(newSelected); if(m_SelectedTab.AttachedItem is DockContainerItem && ((DockContainerItem)m_SelectedTab.AttachedItem).Control!=null && ((DockContainerItem)m_SelectedTab.AttachedItem).Control.Focused) { this.Focus(); } if(m_SelectedTab.AttachedItem!=null) m_SelectedTab.AttachedItem.Displayed=false; else if(m_SelectedTab.AttachedControl!=null && !m_MdiTabbedDocuments) { //if(!(this.IsDesignMode && m_SelectedTab.AttachedControl is TabControlPanel)) m_SelectedTab.AttachedControl.Visible=false; } m_SelectedTab=newSelected; m_NeedRecalcSize=true; EnsureVisible(m_SelectedTab); if(m_SelectedTab.AttachedItem!=null) { m_SelectedTab.AttachedItem.Displayed=true; if(m_SelectedTab.AttachedItem is DockContainerItem && ((DockContainerItem)m_SelectedTab.AttachedItem).Control!=null) { if(m_AutoSelectAttachedControl) ((DockContainerItem)m_SelectedTab.AttachedItem).Control.Select(); } } else if(m_SelectedTab.AttachedControl!=null) { if(!m_MdiTabbedDocuments) { //if(!(this.IsDesignMode && m_SelectedTab.AttachedControl is TabControlPanel)) m_SelectedTab.AttachedControl.Visible=true; if (m_AutoSelectAttachedControl) m_SelectedTab.AttachedControl.Select(); } else if(m_SelectedTab.AttachedControl is Form) { MdiClient client=this.GetMdiClient(m_MdiForm); bool bSetRedraw=false; Form oldActive=m_MdiForm.ActiveMdiChild; if(client!=null && m_MdiNoFormActivateFlicker && m_SelectedTab.AttachedControl is Form && (((Form)m_SelectedTab.AttachedControl).WindowState==FormWindowState.Maximized || oldActive!=null && oldActive.WindowState==FormWindowState.Maximized)) { NativeFunctions.SendMessage(client.Handle,NativeFunctions.WM_SETREDRAW,0,0); bSetRedraw=true; } ((Form)m_SelectedTab.AttachedControl).Activate(); //if(m_TabSystemBox!=null) // m_TabSystemBox.CloseVisible=((Form)m_SelectedTab.AttachedControl).ControlBox; if(bSetRedraw) { NativeFunctions.SendMessage(client.Handle,NativeFunctions.WM_SETREDRAW,1,0); client.Refresh(); } if(oldActive!=null && oldActive.WindowState==FormWindowState.Normal) { if(BarFunctions.ThemedOS) { // This will force repaint of Title bar since there were some repainting issues with it... string s = oldActive.Text; // GetFormText(oldActive); oldActive.Text=s+" "; oldActive.Text=s; } } } } this.Invalidate(); if(SelectedTabChanged!=null) { TabStripTabChangedEventArgs eventData=new TabStripTabChangedEventArgs(oldTab,m_SelectedTab,eEventSource.Mouse); SelectedTabChanged(this,eventData); } } else if (m_SelectedTab != null && m_SelectedTab.AttachedItem is DockContainerItem && m_SelectedTab.AttachedItem.ContainerControl is Bar && ((Bar)m_SelectedTab.AttachedItem.ContainerControl).DockSide == eDockSide.Document && ((DockContainerItem)m_SelectedTab.AttachedItem).Control != null) { if (m_AutoSelectAttachedControl) ((DockContainerItem)m_SelectedTab.AttachedItem).Control.Select(); } break; } } } // Invoke TabItem events. TabItem tabAt = HitTest(e.X, e.Y); if (tabAt != null) { tabAt.InvokeMouseDown(e); } }
private void TabStripTabChanging(object sender, TabStripTabChangingEventArgs e) { if (m_RefreshingDockTab) return; e.Cancel = InvokeDockTabChange((e.OldTab == null ? null : e.OldTab.AttachedItem), (e.NewTab == null ? null : e.NewTab.AttachedItem)); }
private void SelectTab(TabItem value, eEventSource eventSource) { if(m_SelectedTab==value) return; TabItem oldTab=m_SelectedTab; if(SelectedTabChanging!=null) { TabStripTabChangingEventArgs eventData = new TabStripTabChangingEventArgs(m_SelectedTab, value, eventSource); SelectedTabChanging(this,eventData); if(eventData.Cancel) return; } InvokeBeforeTabDisplay(value); Control hideControl=null; if(m_SelectedTab!=null && m_SelectedTab.AttachedItem!=null) m_SelectedTab.AttachedItem.Displayed=false; else if(m_SelectedTab!=null && m_SelectedTab.AttachedControl!=null) { if(!m_MdiTabbedDocuments) hideControl=m_SelectedTab.AttachedControl; } m_SelectedTab=value; m_NeedRecalcSize=true; EnsureVisible(m_SelectedTab); if(m_SelectedTab!=null && m_SelectedTab.AttachedItem!=null) { m_SelectedTab.AttachedItem.Displayed=true; if(m_SelectedTab.AttachedItem is DockContainerItem && ((DockContainerItem)m_SelectedTab.AttachedItem).Control!=null) { if(m_AutoSelectAttachedControl) ((DockContainerItem)m_SelectedTab.AttachedItem).Control.Select(); } } else if(m_SelectedTab!=null && m_SelectedTab.AttachedControl!=null) { if(!m_MdiTabbedDocuments) { //if(!(this.IsDesignMode && m_SelectedTab.AttachedControl is TabControlPanel)) m_SelectedTab.AttachedControl.Visible=true; if (m_AutoSelectAttachedControl && !(this.TabStop && this.Parent is TabControl && this.Focused && eventSource == eEventSource.Keyboard)) m_SelectedTab.AttachedControl.Select(); if(hideControl==m_SelectedTab.AttachedControl) hideControl=null; } else if(m_SelectedTab.AttachedControl is Form) { MdiClient client=this.GetMdiClient(m_MdiForm); bool bSetRedraw=false; Form oldActive=m_MdiForm.ActiveMdiChild; if(client!=null && m_MdiNoFormActivateFlicker && m_SelectedTab.AttachedControl is Form && (((Form)m_SelectedTab.AttachedControl).WindowState==FormWindowState.Maximized || oldActive!=null && oldActive.WindowState==FormWindowState.Maximized)) { NativeFunctions.SendMessage(client.Handle,NativeFunctions.WM_SETREDRAW,0,0); bSetRedraw=true; } ((Form)m_SelectedTab.AttachedControl).Activate(); //if(m_TabSystemBox!=null) // m_TabSystemBox.CloseVisible=((Form)m_SelectedTab.AttachedControl).ControlBox; if(bSetRedraw) { NativeFunctions.SendMessage(client.Handle,NativeFunctions.WM_SETREDRAW,1,0); client.Refresh(); } if(oldActive!=null && oldActive.WindowState==FormWindowState.Normal) { if(BarFunctions.ThemedOS) { // This will force repaint of Title bar since there were some repainting issues with it... string s = oldActive.Text; // GetFormText(oldActive); oldActive.Text=s+" "; oldActive.Text=s; } } } } if(hideControl!=null) { //if(!(this.IsDesignMode && hideControl is TabControlPanel)) hideControl.Visible=false; } this.Invalidate(); if(SelectedTabChanged!=null) { TabStripTabChangedEventArgs eventData = new TabStripTabChangedEventArgs(oldTab, m_SelectedTab, eventSource); SelectedTabChanged(this,eventData); } }