我们如何突出显示点击菜单条上的活动菜单项?
问题描述:
我正在使用C#WinForms的桌面应用程序。我用菜单栏在不同的面板之间导航。我面临的问题是我无法突出显示菜单栏图标的活动颜色。图示说明 将更好地解释我想要的功能。我们如何突出显示点击菜单条上的活动菜单项?
这是我的菜单条
和点击MenuStripItem我想要实现这个
总之我要在菜单条项保留高亮当我按点击就可以了,就像搜索和编辑在画面和事后如果我在 新客户点击那么它必须被强调为搜索&编辑
答
您可以使用ToolStrip
代替并将项目Checked
属性设置为true。要做到这一点,你可以处理ItemClicked
事件的ToolStrip
和检查项目是这样的:
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();
这样,它显示选中的项目为突出显示。
+0
谢谢你,他帮了我很多。最好使用toolstrip而不是menustrip。谢谢 – Ezaz
答
选定的项目可以在Paint
改变(不知道是否有更合适的事件)://计算器:
public Form1()
{
InitializeComponent();
ToolStripItem activeToolStripItem = null;
menuStrip1.Paint += (o, e) => activeToolStripItem?.Select();
menuStrip1.ItemClicked += (o, e) => activeToolStripItem = e.ClickedItem;
}
[变化的WinForms菜单下拉列表边框的颜色(HTTPS的可能的复制。 com/questions/32307778/change-the-border-color-of-winforms-menu-dropdown-list) – Plutonix
使用'ToolStrip'会更好吗?然后,您可以将切换按钮添加到“ToolStrip”,并将与活动面板相对应的按钮设置为“已检查”。 – erdomke