internal int InsertPage(int index, TabListPage page) { if (_pages == null) { _pages = new TabListPage[1]; } else if (_pages.Length == this.TabListPageCount) { // no room left, so resize the array TabListPage[] copy; copy = new TabListPage[_pages.Length + 1]; Array.Copy(_pages, copy, _pages.Length); _pages = copy; } // if this is an insert rather than append, move the array around if (index < this.TabListPageCount) { Array.Copy(_pages, index, _pages, index + 1, _pages.Length - index); } // update the array and page count _pages[index] = page; this.TabListPageCount++; this.UpdatePages(); this.UpdateSelectedPage(); // finally trigger a redraw of the control this.Invalidate(); return(index); }
public void Add(TabListPage value) { if (value == null) { throw new ArgumentNullException("value"); } this.Owner.Controls.Add(value); }
public bool Contains(TabListPage value) { if (value == null) { throw new ArgumentNullException("value"); } return(this.IndexOf(value) != -1); }
public void Insert(int index, TabListPage value) { if (value == null) { throw new ArgumentNullException("value"); } this.Owner.InsertPage(index, value); this.Owner.Controls.Add(value); this.Owner.Controls.SetChildIndex(value, index); }
public IEnumerator GetEnumerator() { TabListPage[] tabPages; tabPages = this.Owner.GetTabListPages(); if (tabPages == null) { tabPages = new TabListPage[0]; } return(tabPages.GetEnumerator()); }
public TabListPage Add(string text) { TabListPage page; page = new TabListPage { Text = text }; this.Add(page); return(page); }
internal TabListPage[] GetTabListPages() { TabListPage[] copy; copy = new TabListPage[this.TabListPageCount]; if (this.TabListPageCount > 0) { Array.Copy(_pages, copy, this.TabListPageCount); } return(copy); }
internal int AddPage(TabListPage page) { int index; index = this.InsertPage(this.TabListPageCount, page); if (this.SelectedIndex == -1) { this.SelectedIndex = index; } return(index); }
public int IndexOf(TabListPage value) { int index; if (value == null) { throw new ArgumentNullException("value"); } index = -1; for (int i = 0; i < this.Count; i++) { if (this[i] == value) { index = i; break; } } return(index); }
public abstract void RenderHeader(Graphics g, TabListPage page, TabListPageState state);
public override void RenderHeader(Graphics g, TabListPage page, TabListPageState state) { Color fillColor; Color textColor; Rectangle fillBounds; Rectangle textRectangle; TextFormatFlags flags; int arrowSize; arrowSize = 6; fillBounds = page.HeaderBounds; fillBounds.Width -= arrowSize; textRectangle = Rectangle.Inflate(fillBounds, -4, -4); // define the most appropriate colors if ((state & TabListPageState.Selected) == TabListPageState.Selected) { fillColor = SystemColors.Highlight; textColor = SystemColors.HighlightText; } else if ((state & TabListPageState.Hot) == TabListPageState.Hot) { fillColor = SystemColors.ControlLightLight; textColor = page.Owner.ForeColor; } else { fillColor = page.Owner.BackColor; textColor = page.Owner.ForeColor; } // fill the background using (Brush brush = new SolidBrush(fillColor)) g.FillRectangle(brush, fillBounds); // draw the selection arrow if ((state & TabListPageState.Selected) == TabListPageState.Selected) { int y; int x; Point point1; Point point2; Point point3; y = fillBounds.Top + ((fillBounds.Height - (arrowSize * 2)) / 2); x = fillBounds.Right; point1 = new Point(x, y); point2 = new Point(x + arrowSize, y + arrowSize); point3 = new Point(x, y + (arrowSize * 2)); using (Brush brush = new SolidBrush(fillColor)) { g.FillPolygon(brush, new[] { point1, point2, point3 }); } } // draw the text flags = TextFormatFlags.VerticalCenter | TextFormatFlags.Left | TextFormatFlags.NoPrefix | TextFormatFlags.SingleLine | TextFormatFlags.WordEllipsis; TextRenderer.DrawText(g, page.Text, page.Font, textRectangle, textColor, fillColor, flags); // focus if ((state & TabListPageState.Focused) == TabListPageState.Focused) { SizeF textSize; int offset; textSize = TextRenderer.MeasureText(g, page.Text, page.Font, textRectangle.Size, flags); offset = 2; ControlPaint.DrawFocusRectangle(g, new Rectangle(textRectangle.X, textRectangle.Y, (int)textSize.Width + offset, (int)textSize.Height + offset), textColor, fillColor); } }
internal void UpdatePage(TabListPage page) { this.Invalidate(); }