protected override void OnPaint(PaintEventArgs e) { this.SetDefaultSelected(); Rectangle borderRect = this.ClientRectangle; borderRect.Width--; borderRect.Height--; this._startPos = 0; if (this.DesignMode) { e.Graphics.DrawRectangle(SystemPens.ControlDark, borderRect); } e.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias; for (int i = 0; i < this._tabPages.Count; i++) { vTabPage currentPage = this._tabPages[i]; if (!currentPage.Visible && !DesignMode) { continue; } this.OnCalcTabPage(e.Graphics, currentPage); currentPage.IsDrawn = false; this.OnDrawTabPage(e.Graphics, currentPage); } }
private void OnCalcTabPage(Graphics g, vTabPage page) { RectangleF buttonRect = new RectangleF(new Point(this._startPos, 0), HEADER_SIZE); page.StripBounds = buttonRect; this._startPos += (int)HEADER_SIZE.Width - 1; }
protected override void OnInsert(int index, object value) { vTabPage page = value as vTabPage; page.Changed += new EventHandler(OnPage_Changed); this.OnCollectionChanged(new CollectionChangeEventArgs(CollectionChangeAction.Add, value)); }
protected override void OnMouseDown(MouseEventArgs e) { base.OnMouseDown(e); if (e.Button != MouseButtons.Left) { return; } for (int i = 0; i < this._tabPages.Count; i++) { vTabPage page = this._tabPages[i]; if (page.StripRect.Contains(e.Location)) { page.StripState = EMouseState.MouseDown; page.IsStripDown = true; } else { page.StripState = EMouseState.Normal; } } vTabPage tabPage = this.GetTabPageByPoint(e.Location); this.SelectedPage = tabPage; base.Invalidate(); }
public virtual void Remove(vTabPage page) { if (base.List.Contains(page)) { base.List.Remove(page); } }
private void OnRemoving(object sender, ComponentEventArgs e) { IDesignerHost host = (IDesignerHost)this.GetService(typeof(IDesignerHost)); if (e.Component is vTabPage) { vTabPage page = e.Component as vTabPage; if (this.Control.TabPages.Contains(page)) { this._changeService.OnComponentChanging(this.Control, null); this.Control.RemoveTab(page); this._changeService.OnComponentChanged(this.Control, null, null, null); return; } } if (e.Component is vTabControl) { for (int i = this.Control.TabPages.Count - 1; i >= 0; i--) { vTabPage page = this.Control.TabPages[i]; this._changeService.OnComponentChanging(this.Control, null); this.Control.RemoveTab(page); host.DestroyComponent(page); this._changeService.OnComponentChanged(this.Control, null, null, null); } } }
protected override void OnRemove(int index, object value) { base.OnRemove(index, value); vTabPage page = value as vTabPage; page.Changed -= new EventHandler(OnPage_Changed); OnCollectionChanged(new CollectionChangeEventArgs(CollectionChangeAction.Remove, value)); }
public virtual void Insert(int index, vTabPage page) { if (this.Contains(page)) { return; } base.List.Insert(index, page); }
internal void SelectPage(vTabPage page) { if (page != null) { page.Dock = DockStyle.Fill; page.Visible = true; page.Selected = true; } }
public virtual int Add(vTabPage page) { int res = base.IndexOf(page); if (res == -1) { res = base.List.Add(page); } return(res); }
public void AddTab(vTabPage page, bool autoSelect) { page.Dock = DockStyle.Fill; this._tabPages.Add(page); if ((autoSelect && page.Visible) || (page.Visible && this._tabPages.DrawnCount < 1)) { this.SelectedPage = page; this.SelectPage(page); } }
private void SetDefaultSelected() { if (this._tabPages.Count > 0) { this._selecedPage = this._tabPages[0]; } for (int i = 0; i < this._tabPages.Count; i++) { vTabPage page = this._tabPages[i]; page.Dock = DockStyle.Fill; } }
public virtual vTabPage MoveTo(int newIndex, vTabPage page) { int currentIndex = base.List.IndexOf(page); if (currentIndex >= 0) { base.RemoveAt(currentIndex); this.Insert(0, page); return(page); } return(null); }
protected override void OnMouseLeave(EventArgs e) { base.OnMouseLeave(e); for (int i = 0; i < this._tabPages.Count; i++) { vTabPage page = this._tabPages[i]; if (!page.IsStripDown) { page.StripState = EMouseState.Normal; base.Invalidate(page.StripRect); } } }
private void OnRemoveTabControl(object sender, EventArgs e) { IDesignerHost host = (IDesignerHost)this.GetService(typeof(IDesignerHost)); DesignerTransaction transaction = host.CreateTransaction("Remove TabControl"); this._changeService.OnComponentChanging(this.Control, null); vTabPage page = this.Control.TabPages[this.Control.TabPages.Count - 1]; this.Control.UnSelectPage(page); this.Control.TabPages.Remove(page); this._changeService.OnComponentChanged(this.Control, null, null, null); transaction.Commit(); }
private void OnAddTabControl(object sender, EventArgs e) { IDesignerHost host = (IDesignerHost)this.GetService(typeof(IDesignerHost)); DesignerTransaction transaction = host.CreateTransaction("Add TabControl"); vTabPage page = (vTabPage)host.CreateComponent(typeof(vTabPage)); this._changeService.OnComponentChanging(this.Control, null); this.Control.AddTab(page); int index = this.Control.TabPages.IndexOf(page) + 1; page.Title = "TabPage" + index; this.Control.SelectPage(page); this._changeService.OnComponentChanged(this.Control, null, null, null); transaction.Commit(); }
protected override void OnMouseUp(MouseEventArgs e) { base.OnMouseUp(e); if (e.Button != MouseButtons.Left) { return; } for (int i = 0; i < this._tabPages.Count; i++) { vTabPage page = this._tabPages[i]; page.IsCloseDown = false; page.IsStripDown = false; page.StripState = EMouseState.Normal; base.Invalidate(page.StripRect); } }
protected override void WndProc(ref System.Windows.Forms.Message m) { if (m.Msg == (int)WindowsMessage.WM_LBUTTONDOWN) { Point point = this.Control.PointToClient(Cursor.Position); vTabPage page = this.Control.GetTabPageByPoint(point); if (page != null) { this.Control.SelectedPage = page; ArrayList selection = new ArrayList(); selection.Add(page); ISelectionService selectionService = (ISelectionService)this.GetService(typeof(ISelectionService)); selectionService.SetSelectedComponents(selection); } } base.WndProc(ref m); }
public virtual void Assign(vTabCollection collection) { this.BeginUpdate(); try { base.Clear(); for (int i = 0; i < collection.Count; i++) { vTabPage page = collection[i]; vTabPage newPage = new vTabPage(); newPage.Assign(page); this.Add(newPage); } } finally { this.EndUpdate(); } }
protected override void OnMouseMove(MouseEventArgs e) { base.OnMouseMove(e); for (int i = 0; i < this._tabPages.Count; i++) { vTabPage page = this._tabPages[i]; if (!page.IsStripDown) { if (page.StripBounds.Contains(e.Location)) { page.StripState = EMouseState.MouseMove; } else { page.StripState = EMouseState.Normal; } base.Invalidate(page.StripRect); } } }
public vTabPage GetTabPageByPoint(Point pt) { vTabPage page = null; bool found = false; for (int i = 0; i < this._tabPages.Count; i++) { vTabPage currentPage = this._tabPages[i]; if (currentPage.StripBounds.Contains(pt) && currentPage.Visible && currentPage.IsDrawn) { page = currentPage; found = true; } if (found) { break; } } return(page); }
void OnCollectionChanged(object sender, CollectionChangeEventArgs e) { vTabPage page = e.Element as vTabPage; if (e.Action == CollectionChangeAction.Add) { this.Controls.Add(page); this.OnTabPageChanged(new TabPageChangeEventArgs(page, ETabPageChangeType.Added)); } else if (e.Action == CollectionChangeAction.Remove) { this.Controls.Remove(page); OnTabPageChanged(new TabPageChangeEventArgs(page, ETabPageChangeType.Removed)); } else { this.OnTabPageChanged(new TabPageChangeEventArgs(page, ETabPageChangeType.Changed)); } this.UpdateLayout(); base.Invalidate(); }
public void RemoveTab(vTabPage page) { int tabIndex = this._tabPages.IndexOf(page); if (tabIndex >= 0) { this.UnSelectPage(page); this._tabPages.Remove(page); } if (this._tabPages.Count > 0) { if (this._tabPages[tabIndex - 1] != null) { this.SelectedPage = this._tabPages[tabIndex - 1]; } else { this.SelectedPage = this._tabPages.FirstVisible; } } }
public TabPageChangeEventArgs(vTabPage page, ETabPageChangeType type) { this._type = type; this._page = page; }
public TabPageClosingEventArgs(vTabPage page) { this._page = page; }
public void Assign(vTabPage page) { this.Visible = page.Visible; this.Text = page.Text; this.Tag = page.Tag; }
/// <summary> /// 绘制选项卡的Header /// </summary> private void OnDrawTabPage(Graphics g, vTabPage page) { Rectangle pageRect = Rectangle.Round(page.StripBounds); if (page.Selected) { g.DrawImage( ImageToolbar_Hover, pageRect, new Rectangle(Point.Empty, ImageToolbar_Hover.Size), GraphicsUnit.Pixel); } else { switch (page.StripState) { case EMouseState.Normal: case EMouseState.MouseLeave: break; case EMouseState.MouseMove: case EMouseState.MouseDown: case EMouseState.MouseUp: g.DrawImage( ImageToolbar_Hover, pageRect, new Rectangle(Point.Empty, ImageToolbar_Hover.Size), GraphicsUnit.Pixel); break; } } if (page.Image != null) { Rectangle imageRect = new Rectangle(); imageRect.X = pageRect.X + (pageRect.Width - 48) / 2; //imageRect.Y += 10; imageRect.Size = new Size(48, 48); g.DrawImage( page.Image, imageRect, new Rectangle(Point.Empty, page.Image.Size), GraphicsUnit.Pixel); } else { Rectangle imageRect = new Rectangle(); imageRect.X = pageRect.X + (pageRect.Width - 48) / 2; imageRect.Size = new Size(48, 48); g.DrawRectangle(Pens.Red, imageRect); } //计算文字的绘制区域 if (page.Title != string.Empty) { SizeF size = g.MeasureString(page.Title, page.Font); RectangleF textRect = new RectangleF(); textRect.X = pageRect.X + (pageRect.Width - size.Width) / 2; textRect.Y = pageRect.Height - 20; textRect.Width = pageRect.Width; textRect.Height = 20; using (Brush brush = new SolidBrush(this.ForeColor)) { g.DrawString(page.Title, this.Font, brush, textRect, this._sf); } } page.IsDrawn = true; }
public override void Initialize(System.ComponentModel.IComponent component) { base.Initialize(component); this._tabPage = component as vTabPage; }
internal void UnSelectPage(vTabPage page) { page.Selected = false; }
public void AddTab(vTabPage page) { this.AddTab(page, false); }