public class SelectedTabChangedEventArgs : EventArgs
{
public readonly TabStripButton SelectedTab; public SelectedTabChangedEventArgs(TabStripButton tab)
{
SelectedTab = tab;
} } /// <summary>
/// Represents a TabStrip control
/// </summary>
public class TabStrip : ToolStrip
{
private TabStripRenderer myRenderer = new TabStripRenderer();
protected TabStripButton mySelTab;
DesignerVerb insPage = null; public TabStrip() : base()
{
InitControl();
} public TabStrip(params TabStripButton[] buttons) : base(buttons)
{
InitControl();
} protected void InitControl()
{
base.RenderMode = ToolStripRenderMode.ManagerRenderMode;
base.Renderer = myRenderer;
myRenderer.RenderMode = this.RenderStyle;
insPage = new DesignerVerb("Insert tab page", new EventHandler(OnInsertPageClicked));
} public override ISite Site
{
get
{
ISite site = base.Site;
if (site != null && site.DesignMode)
{
IContainer comp = site.Container;
if (comp != null)
{
IDesignerHost host = comp as IDesignerHost;
if (host != null)
{
IDesigner designer = host.GetDesigner(site.Component);
if (designer != null && !designer.Verbs.Contains(insPage))
designer.Verbs.Add(insPage);
}
}
}
return site;
}
set
{
base.Site = value;
}
} protected void OnInsertPageClicked(object sender, EventArgs e)
{
ISite site = base.Site;
if (site != null && site.DesignMode)
{
IContainer container = site.Container;
if (container != null)
{
TabStripButton btn = new TabStripButton();
container.Add(btn);
btn.Text = btn.Name;
}
}
} /// <summary>
/// Gets custom renderer for TabStrip. Set operation has no effect
/// </summary>
public new ToolStripRenderer Renderer
{
get { return myRenderer; }
set { base.Renderer = myRenderer; }
} /// <summary>
/// Gets or sets layout style for TabStrip control
/// </summary>
public new ToolStripLayoutStyle LayoutStyle
{
get { return base.LayoutStyle; }
set
{
switch (value)
{
case ToolStripLayoutStyle.StackWithOverflow:
case ToolStripLayoutStyle.HorizontalStackWithOverflow:
case ToolStripLayoutStyle.VerticalStackWithOverflow:
base.LayoutStyle = ToolStripLayoutStyle.StackWithOverflow;
break;
case ToolStripLayoutStyle.Table:
base.LayoutStyle = ToolStripLayoutStyle.Table;
break;
case ToolStripLayoutStyle.Flow:
base.LayoutStyle = ToolStripLayoutStyle.Flow;
break;
default:
base.LayoutStyle = ToolStripLayoutStyle.StackWithOverflow;
break;
}
}
} /// <summary>
///
/// </summary>
[Obsolete("Use RenderStyle instead")]
[Browsable(false)]
public new ToolStripRenderMode RenderMode
{
get { return base.RenderMode; }
set { RenderStyle = value; }
} /// <summary>
/// Gets or sets render style for TabStrip, use it instead of
/// </summary>
[Category("Appearance")]
[Description("Gets or sets render style for TabStrip. You should use this property instead of RenderMode.")]
public ToolStripRenderMode RenderStyle
{
get { return myRenderer.RenderMode; }
set
{
myRenderer.RenderMode = value;
this.Invalidate();
}
} protected override Padding DefaultPadding
{
get
{
return Padding.Empty;
}
} [Browsable(false)]
public new Padding Padding
{
get { return DefaultPadding; }
set { }
} /// <summary>
/// Gets or sets if control should use system visual styles for painting items
/// </summary>
[Category("Appearance")]
[Description("Specifies if TabStrip should use system visual styles for painting items")]
public bool UseVisualStyles
{
get { return myRenderer.UseVS; }
set
{
myRenderer.UseVS = value;
this.Invalidate();
}
} /// <summary>
/// Gets or sets if TabButtons should be drawn flipped
/// </summary>
[Category("Appearance")]
[Description("Specifies if TabButtons should be drawn flipped (for right- and bottom-aligned TabStrips)")]
public bool FlipButtons
{
get { return myRenderer.Mirrored; }
set
{
myRenderer.Mirrored = value;
this.Invalidate();
}
} /// <summary>
/// Gets or sets currently selected tab
/// </summary>
public TabStripButton SelectedTab
{
get { return mySelTab; }
set
{
if (value == null)
return;
if (mySelTab == value)
return;
if (value.Owner != this)
throw new ArgumentException("Cannot select TabButtons that do not belong to this TabStrip");
OnItemClicked(new ToolStripItemClickedEventArgs(value));
}
} public event EventHandler<SelectedTabChangedEventArgs> SelectedTabChanged; protected void OnTabSelected(TabStripButton tab)
{
this.Invalidate();
if (SelectedTabChanged != null)
SelectedTabChanged(this, new SelectedTabChangedEventArgs(tab));
} protected override void OnItemAdded(ToolStripItemEventArgs e)
{
base.OnItemAdded(e);
if (e.Item is TabStripButton)
SelectedTab = (TabStripButton)e.Item;
} protected override void OnItemClicked(ToolStripItemClickedEventArgs e)
{
TabStripButton clickedBtn = e.ClickedItem as TabStripButton;
if (clickedBtn != null)
{
this.SuspendLayout();
mySelTab = clickedBtn;
this.ResumeLayout();
OnTabSelected(clickedBtn);
}
base.OnItemClicked(e);
} }
{
public readonly TabStripButton SelectedTab; public SelectedTabChangedEventArgs(TabStripButton tab)
{
SelectedTab = tab;
} } /// <summary>
/// Represents a TabStrip control
/// </summary>
public class TabStrip : ToolStrip
{
private TabStripRenderer myRenderer = new TabStripRenderer();
protected TabStripButton mySelTab;
DesignerVerb insPage = null; public TabStrip() : base()
{
InitControl();
} public TabStrip(params TabStripButton[] buttons) : base(buttons)
{
InitControl();
} protected void InitControl()
{
base.RenderMode = ToolStripRenderMode.ManagerRenderMode;
base.Renderer = myRenderer;
myRenderer.RenderMode = this.RenderStyle;
insPage = new DesignerVerb("Insert tab page", new EventHandler(OnInsertPageClicked));
} public override ISite Site
{
get
{
ISite site = base.Site;
if (site != null && site.DesignMode)
{
IContainer comp = site.Container;
if (comp != null)
{
IDesignerHost host = comp as IDesignerHost;
if (host != null)
{
IDesigner designer = host.GetDesigner(site.Component);
if (designer != null && !designer.Verbs.Contains(insPage))
designer.Verbs.Add(insPage);
}
}
}
return site;
}
set
{
base.Site = value;
}
} protected void OnInsertPageClicked(object sender, EventArgs e)
{
ISite site = base.Site;
if (site != null && site.DesignMode)
{
IContainer container = site.Container;
if (container != null)
{
TabStripButton btn = new TabStripButton();
container.Add(btn);
btn.Text = btn.Name;
}
}
} /// <summary>
/// Gets custom renderer for TabStrip. Set operation has no effect
/// </summary>
public new ToolStripRenderer Renderer
{
get { return myRenderer; }
set { base.Renderer = myRenderer; }
} /// <summary>
/// Gets or sets layout style for TabStrip control
/// </summary>
public new ToolStripLayoutStyle LayoutStyle
{
get { return base.LayoutStyle; }
set
{
switch (value)
{
case ToolStripLayoutStyle.StackWithOverflow:
case ToolStripLayoutStyle.HorizontalStackWithOverflow:
case ToolStripLayoutStyle.VerticalStackWithOverflow:
base.LayoutStyle = ToolStripLayoutStyle.StackWithOverflow;
break;
case ToolStripLayoutStyle.Table:
base.LayoutStyle = ToolStripLayoutStyle.Table;
break;
case ToolStripLayoutStyle.Flow:
base.LayoutStyle = ToolStripLayoutStyle.Flow;
break;
default:
base.LayoutStyle = ToolStripLayoutStyle.StackWithOverflow;
break;
}
}
} /// <summary>
///
/// </summary>
[Obsolete("Use RenderStyle instead")]
[Browsable(false)]
public new ToolStripRenderMode RenderMode
{
get { return base.RenderMode; }
set { RenderStyle = value; }
} /// <summary>
/// Gets or sets render style for TabStrip, use it instead of
/// </summary>
[Category("Appearance")]
[Description("Gets or sets render style for TabStrip. You should use this property instead of RenderMode.")]
public ToolStripRenderMode RenderStyle
{
get { return myRenderer.RenderMode; }
set
{
myRenderer.RenderMode = value;
this.Invalidate();
}
} protected override Padding DefaultPadding
{
get
{
return Padding.Empty;
}
} [Browsable(false)]
public new Padding Padding
{
get { return DefaultPadding; }
set { }
} /// <summary>
/// Gets or sets if control should use system visual styles for painting items
/// </summary>
[Category("Appearance")]
[Description("Specifies if TabStrip should use system visual styles for painting items")]
public bool UseVisualStyles
{
get { return myRenderer.UseVS; }
set
{
myRenderer.UseVS = value;
this.Invalidate();
}
} /// <summary>
/// Gets or sets if TabButtons should be drawn flipped
/// </summary>
[Category("Appearance")]
[Description("Specifies if TabButtons should be drawn flipped (for right- and bottom-aligned TabStrips)")]
public bool FlipButtons
{
get { return myRenderer.Mirrored; }
set
{
myRenderer.Mirrored = value;
this.Invalidate();
}
} /// <summary>
/// Gets or sets currently selected tab
/// </summary>
public TabStripButton SelectedTab
{
get { return mySelTab; }
set
{
if (value == null)
return;
if (mySelTab == value)
return;
if (value.Owner != this)
throw new ArgumentException("Cannot select TabButtons that do not belong to this TabStrip");
OnItemClicked(new ToolStripItemClickedEventArgs(value));
}
} public event EventHandler<SelectedTabChangedEventArgs> SelectedTabChanged; protected void OnTabSelected(TabStripButton tab)
{
this.Invalidate();
if (SelectedTabChanged != null)
SelectedTabChanged(this, new SelectedTabChangedEventArgs(tab));
} protected override void OnItemAdded(ToolStripItemEventArgs e)
{
base.OnItemAdded(e);
if (e.Item is TabStripButton)
SelectedTab = (TabStripButton)e.Item;
} protected override void OnItemClicked(ToolStripItemClickedEventArgs e)
{
TabStripButton clickedBtn = e.ClickedItem as TabStripButton;
if (clickedBtn != null)
{
this.SuspendLayout();
mySelTab = clickedBtn;
this.ResumeLayout();
OnTabSelected(clickedBtn);
}
base.OnItemClicked(e);
} }
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货