public virtual int Add(FATabStripItem item) { int res = IndexOf(item); if (res == -1) res = List.Add(item); return res; }
public virtual void Remove(FATabStripItem item) { if (List.Contains(item)) List.Remove(item); }
public virtual void AddRange(FATabStripItem[] items) { BeginUpdate(); try { foreach (FATabStripItem item in items) { List.Add(item); } } finally { EndUpdate(); } }
public virtual void Assign(FATabStripItemCollection collection) { BeginUpdate(); try { Clear(); for (int n = 0; n < collection.Count; n++) { FATabStripItem item = collection[n]; FATabStripItem newItem = new FATabStripItem(); newItem.Assign(item); Add(newItem); } } finally { EndUpdate(); } }
public TabStripItemClosingEventArgs(FATabStripItem item) { _item = item; }
public void Assign(FATabStripItem item) { Visible = item.Visible; Text = item.Text; CanClose = item.CanClose; Tag = item.Tag; }
private void OnDrawTabPage(Graphics g, FATabStripItem currentItem) { bool isFirstTab = Items.IndexOf(currentItem) == 0; Font currentFont = Font; if (currentItem == SelectedItem) currentFont = new Font(Font, FontStyle.Bold); SizeF textSize = g.MeasureString(currentItem.Title, currentFont, new SizeF(200, 10), sf); textSize.Width += 20; RectangleF buttonRect = currentItem.StripRect; GraphicsPath path = new GraphicsPath(); LinearGradientBrush brush; int mtop = 3; #region Draw Not Right-To-Left Tab if (RightToLeft == RightToLeft.No) { if (currentItem == SelectedItem || isFirstTab) { path.AddLine(buttonRect.Left - 10, buttonRect.Bottom - 1, buttonRect.Left + (buttonRect.Height/2) - 4, mtop + 4); } else { path.AddLine(buttonRect.Left, buttonRect.Bottom - 1, buttonRect.Left, buttonRect.Bottom - (buttonRect.Height/2) - 2); path.AddLine(buttonRect.Left, buttonRect.Bottom - (buttonRect.Height/2) - 3, buttonRect.Left + (buttonRect.Height/2) - 4, mtop + 3); } path.AddLine(buttonRect.Left + (buttonRect.Height/2) + 2, mtop, buttonRect.Right - 3, mtop); path.AddLine(buttonRect.Right, mtop + 2, buttonRect.Right, buttonRect.Bottom - 1); path.AddLine(buttonRect.Right - 4, buttonRect.Bottom - 1, buttonRect.Left, buttonRect.Bottom - 1); path.CloseFigure(); if (currentItem == SelectedItem) { brush = new LinearGradientBrush(buttonRect, SystemColors.ControlLightLight, SystemColors.Window, LinearGradientMode.Vertical); } else { brush = new LinearGradientBrush(buttonRect, SystemColors.ControlLightLight, SystemColors.Control, LinearGradientMode.Vertical); } g.FillPath(brush, path); g.DrawPath(SystemPens.ControlDark, path); if (currentItem == SelectedItem) { g.DrawLine(new Pen(brush), buttonRect.Left - 9, buttonRect.Height + 2, buttonRect.Left + buttonRect.Width - 1, buttonRect.Height + 2); } PointF textLoc = new PointF(buttonRect.Left + buttonRect.Height - 4, buttonRect.Top + (buttonRect.Height/2) - (textSize.Height/2) - 3); RectangleF textRect = buttonRect; textRect.Location = textLoc; textRect.Width = buttonRect.Width - (textRect.Left - buttonRect.Left) - 4; textRect.Height = textSize.Height + currentFont.Size/2; if (currentItem == SelectedItem) { //textRect.Y -= 2; g.DrawString(currentItem.Title, currentFont, new SolidBrush(ForeColor), textRect, sf); } else { g.DrawString(currentItem.Title, currentFont, new SolidBrush(ForeColor), textRect, sf); } } #endregion #region Draw Right-To-Left Tab if (RightToLeft == RightToLeft.Yes) { if (currentItem == SelectedItem || isFirstTab) { path.AddLine(buttonRect.Right + 10, buttonRect.Bottom - 1, buttonRect.Right - (buttonRect.Height/2) + 4, mtop + 4); } else { path.AddLine(buttonRect.Right, buttonRect.Bottom - 1, buttonRect.Right, buttonRect.Bottom - (buttonRect.Height/2) - 2); path.AddLine(buttonRect.Right, buttonRect.Bottom - (buttonRect.Height/2) - 3, buttonRect.Right - (buttonRect.Height/2) + 4, mtop + 3); } path.AddLine(buttonRect.Right - (buttonRect.Height/2) - 2, mtop, buttonRect.Left + 3, mtop); path.AddLine(buttonRect.Left, mtop + 2, buttonRect.Left, buttonRect.Bottom - 1); path.AddLine(buttonRect.Left + 4, buttonRect.Bottom - 1, buttonRect.Right, buttonRect.Bottom - 1); path.CloseFigure(); if (currentItem == SelectedItem) { brush = new LinearGradientBrush(buttonRect, SystemColors.ControlLightLight, SystemColors.Window, LinearGradientMode.Vertical); } else { brush = new LinearGradientBrush(buttonRect, SystemColors.ControlLightLight, SystemColors.Control, LinearGradientMode.Vertical); } g.FillPath(brush, path); g.DrawPath(SystemPens.ControlDark, path); if (currentItem == SelectedItem) { g.DrawLine(new Pen(brush), buttonRect.Right + 9, buttonRect.Height + 2, buttonRect.Right - buttonRect.Width + 1, buttonRect.Height + 2); } PointF textLoc = new PointF(buttonRect.Left + 2, buttonRect.Top + (buttonRect.Height/2) - (textSize.Height/2) - 2); RectangleF textRect = buttonRect; textRect.Location = textLoc; textRect.Width = buttonRect.Width - (textRect.Left - buttonRect.Left) - 10; textRect.Height = textSize.Height + currentFont.Size/2; if (currentItem == SelectedItem) { textRect.Y -= 1; g.DrawString(currentItem.Title, currentFont, new SolidBrush(ForeColor), textRect, sf); } else { g.DrawString(currentItem.Title, currentFont, new SolidBrush(ForeColor), textRect, sf); } //g.FillRectangle(Brushes.Red, textRect); } #endregion currentItem.IsDrawn = true; }
public virtual bool Contains(FATabStripItem item) { return List.Contains(item); }
private bool AllowDraw(FATabStripItem item) { bool result = true; if (RightToLeft == RightToLeft.No) { if (item.StripRect.Right >= stripButtonRect.Width) result = false; } else { if (item.StripRect.Left <= stripButtonRect.Left) return false; } return result; }
private void OnCalcTabPage(Graphics g, FATabStripItem currentItem) { Font currentFont = Font; if (currentItem == SelectedItem) currentFont = new Font(Font, FontStyle.Bold); SizeF textSize = g.MeasureString(currentItem.Title, currentFont, new SizeF(200, 10), sf); textSize.Width += 20; if (RightToLeft == RightToLeft.No) { RectangleF buttonRect = new RectangleF(DEF_START_POS, 3, textSize.Width, 17); currentItem.StripRect = buttonRect; DEF_START_POS += (int) textSize.Width; } else { RectangleF buttonRect = new RectangleF(DEF_START_POS - textSize.Width + 1, 3, textSize.Width - 1, 17); currentItem.StripRect = buttonRect; DEF_START_POS -= (int) textSize.Width; } }
internal void UnSelectItem(FATabStripItem tabItem) { //tabItem.Visible = false; tabItem.Selected = false; }
internal void SelectItem(FATabStripItem tabItem) { tabItem.Dock = DockStyle.Fill; tabItem.Visible = true; tabItem.Selected = true; }
/// <summary> /// Remove a <see cref="FATabStripItem"/> from this control. /// </summary> /// <param name="tabItem"></param> public void RemoveTab(FATabStripItem tabItem) { int tabIndex = Items.IndexOf(tabItem); if (tabIndex >= 0) { UnSelectItem(tabItem); Items.Remove(tabItem); } if (Items.Count > 0) { if (RightToLeft == RightToLeft.No) { if (Items[tabIndex - 1] != null) { SelectedItem = Items[tabIndex - 1]; } else { SelectedItem = Items.FirstVisible; } } else { if (Items[tabIndex + 1] != null) { SelectedItem = Items[tabIndex + 1]; } else { SelectedItem = Items.LastVisible; } } } }
public virtual FATabStripItem MoveTo(int newIndex, FATabStripItem item) { int currentIndex = List.IndexOf(item); if (currentIndex >= 0) { RemoveAt(currentIndex); Insert(0, item); return item; } return null; }
/// <summary> /// Add a <see cref="FATabStripItem"/> to this control without selecting it. /// </summary> /// <param name="tabItem"></param> public void AddTab(FATabStripItem tabItem) { AddTab(tabItem, false); }
public virtual int IndexOf(FATabStripItem item) { return List.IndexOf(item); }
/// <summary> /// Add a <see cref="FATabStripItem"/> to this control. /// User can make the currently selected item or not. /// </summary> /// <param name="tabItem"></param> public void AddTab(FATabStripItem tabItem, bool autoSelect) { tabItem.Dock = DockStyle.Fill; Items.Add(tabItem); if ((autoSelect && tabItem.Visible) || (tabItem.Visible && Items.DrawnCount < 1 )) { SelectedItem = tabItem; SelectItem(tabItem); } }
public virtual void Insert(int index, FATabStripItem item) { if (Contains(item)) return; List.Insert(index, item); }
public TabStripItemChangedEventArgs(FATabStripItem item, FATabStripItemChangeTypes type) { changeType = type; itm = item; }