您可以使用ToolStrip
,并将项的Checked
属性设置为true。为此,您可以处理ToolStrip
的ItemClicked
事件,并以以下方式检查项目:
private void toolStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
{
foreach (ToolStripButton item in ((ToolStrip)sender).Items)
{
if (item != e.ClickedItem)
item.Checked = false;
else
item.Checked = true;
}
}
这样可以在选中项周围显示边框。如果由于任何原因您对外观不满意,您可以通过创建自定义渲染器并将其分配为ToolStrip
的渲染器来定制选中项的外观:
public class MyRenderer : ToolStripProfessionalRenderer
{
public MyRenderer() : base(new MyColorTable())
{
}
}
public class MyColorTable : ProfessionalColorTable
{
public override Color ButtonCheckedGradientBegin
{
get { return ButtonPressedGradientBegin; }
}
public override Color ButtonCheckedGradientEnd
{
get { return ButtonPressedGradientEnd; }
}
public override Color ButtonCheckedGradientMiddle
{
get { return ButtonPressedGradientMiddle; }
}
}
Load
事件中分配渲染器,代码如下:toolStrip1.Renderer = new MyRenderer();
这样做可以将选中的项目显示为高亮。
设置MenuStrip上被点击项的背景颜色如下:
private void menuStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
{
foreach (ToolStripMenuItem item in ((ToolStrip)sender).Items)
{
if (item != e.ClickedItem)
item.BackColor = Color.White;
else
item.BackColor = Color.Cyan;
}
}
Paint
上进行更改(不确定是否存在更合适的事件):public Form1()
{
InitializeComponent();
ToolStripItem activeToolStripItem = null;
menuStrip1.Paint += (o, e) => activeToolStripItem?.Select();
menuStrip1.ItemClicked += (o, e) => activeToolStripItem = e.ClickedItem;
}
ToolStrip
是否是更好的选择?然后,您可以将切换按钮添加到ToolStrip
上,并将对应于活动面板的按钮设置为“已选中”。 - erdomke