using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Data; using System.Linq; using System.Text; using System.Windows.Forms; using ryCommon; namespace ryControls { /// /// 多标签控件 /// [DefaultEvent("SelectedIndexChanged")] [Description("多标签控件")] public partial class TabBar : UserControl { /// /// /// public TabBar() { InitializeComponent(); } /// /// 选项发生变化时激发 /// [Description("选项发生变化时")] public event EventHandler SelectedIndexChanged; private int _SelectedIndex = 0; /// /// 标签选择的序号 /// public int SelectedIndex { get { return _SelectedIndex; } set { if (_SelectedIndex != value) { _SelectedIndex = value; if (TabControlEx != null) { if (TabControlEx.TabCount > value) { TabControlEx.SelectedIndex = value; } } else { for (int m = 0; m < list_ctl.Count; m++) { Label lbl2 = list_ctl[m]; if (m == value) { lbl2.ForeColor = Selected_Color; PicTabSelect.Left = lbl2.Left; PicTabSelect.Top = this.Height - PicTabSelect.Height; PicTabSelect.BringToFront(); PicTabSelect.Width = lbl2.Width; } else { lbl2.ForeColor = this.ForeColor; } } SelectedIndexChanged?.Invoke(this, new EventArgs()); } } } } private string _tab_list = ""; /// /// /// public string TabList { get { return _tab_list; } set { _tab_list = value; ReDraw(); } } private Color _Selected_Color = Color.RoyalBlue; /// /// 选择的颜色 /// public Color Selected_Color { get { return _Selected_Color; } set { _Selected_Color = value; ReDraw(); } } private Color _TabControl_Color = Color.FromArgb(233, 233, 233); /// /// 多标签控件颜色 /// public Color TabControl_Color { get { return _TabControl_Color; } set { _TabControl_Color = value; if (TabControlEx != null) { TabControlEx.TabBackColor = TabControl_Color; for (int i = 0; i < TabControlEx.TabCount; i++) { TabControlEx.TabPages[i].BackColor = TabControl_Color; } } } } private TabControlEx tabControlEx; /// /// /// public TabControlEx TabControlEx { get { return this.tabControlEx; } set { if (this.tabControlEx != value) { if (this.tabControlEx != null) { this.tabControlEx.SelectedIndexChanged -= TabControlEx_SelectedIndexChanged; } if (this.tabControlEx != null && this.tabControlEx.TabBar == this) { this.tabControlEx.InternalTabBar = null; } this.tabControlEx = value; if (value != null) { value.InternalTabBar = this; value.SelectedIndexChanged += TabControlEx_SelectedIndexChanged; value.BringToFront(); value.TabBackground = null; value.ItemSize = new Size(0, 1); value.TabBackColor = TabControl_Color; for (int i = 0; i < value.TabCount; i++) { value.TabPages[i].BackColor = TabControl_Color; } value.Location = new Point(this.Left, this.Top + this.Height); } } } } private void TabControlEx_SelectedIndexChanged(object o, EventArgs e) { TabControlEx tab = (TabControlEx)o; for (int m = 0; m < list_ctl.Count; m++) { Label lbl2 = list_ctl[m]; if (m == tab.SelectedIndex) { lbl2.ForeColor = Selected_Color; PicTabSelect.Left = lbl2.Left; PicTabSelect.Top = this.Height - PicTabSelect.Height; PicTabSelect.BringToFront(); PicTabSelect.Width = lbl2.Width; } else { lbl2.ForeColor = this.ForeColor; } } _SelectedIndex = tab.SelectedIndex; SelectedIndexChanged?.Invoke(this, new EventArgs()); } private List