我在我的应用中添加MenuStrip
,并在ManagerRenderMode
Render Mode
添加BackColor
。问题在于外观,看起来很内脏。看看那两张照片,我想改变透明的子菜单的白色边框,那个看起来灰色的蓝色矩形菜单和深灰色的子菜单(和他的边框是深蓝色)和边框白色菜单何时被选中。我怎么能这样做?
36; 36; 36
是:ForeColor
而LightGray
是white border
。
我设法更改蓝色矩形,选中选项时为白色矩形,选择子菜单选项时为蓝色矩形,但我不知道如何更改 Color culoare = Color.FromArgb(20, 20, 20);
Color culoare1 = Color.FromArgb(36, 36, 36);
public override Color MenuItemSelected
{
get { return culoare; }
}
public override Color MenuItemBorder
{
get { return culoare; }
}
public override Color MenuItemSelectedGradientBegin
{
get { return culoare; }
}
public override Color MenuItemSelectedGradientEnd
{
get { return culoare; }
}
public override Color MenuItemPressedGradientBegin
{
get { return culoare; }
}
public override Color MenuItemPressedGradientEnd
{
get { return culoare; }
}
public override Color MenuBorder
{
get { return culoare; }
}
,请提供帮助。
到目前为止,这是代码......
{{1}}
答案 0 :(得分:17)
您可以通过创建自己的ColorTable来实现此目的,并覆盖您希望更改颜色的属性:
public class TestColorTable : ProfessionalColorTable
{
public override Color MenuItemSelected
{
get { return Color.Red; }
}
public override Color MenuBorder //added for changing the menu border
{
get { return Color.Green; }
}
}
您可以这样使用它:
private void Form1_Load(object sender, EventArgs e)
{
menuStrip1.Renderer = new ToolStripProfessionalRenderer(new TestColorTable());
}
答案 1 :(得分:4)
您的方法不正确。您不使用forecolor / backcolor设置菜单和工具条的样式。
查看ToolStripProfessionalRenderer
有关如何使用此
的示例public class MyToolStripRenderer : ToolStripProfessionalRenderer
{
/* override styling/drawing here */
}
MenuStrip strip = new MenuStrip();
strip.Renderer = new MyToolStripRenderer();
//this will set RenderMode to "Custom"
考虑使用此example on CodeProject作为一些研究。
更好的是,VBForums已经加载了它们,已经实现了(通常的Luna,Office,Windows,Visual Studio样式!)
如果您只是想要色彩......请使用Pondidum的答案!它涉及的工作量较少!