更新时间:2023-12-05 09:57:16
>> ...我想删除此背景...
>> … I want to remove this background …
为了实现这一目标,您可以尝试覆盖相关方法,就像下面显示的代码一样。
In order to achieve this goal, you can try to override related methods, just like code shown as follows.
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
menuStrip1.Renderer = new MenuItemRenderer();
}
private void item1ToolStripMenuItem_Click(object sender, EventArgs e)
{
MessageBox.Show("click item1");
}
}
class MenuBarColor : ProfessionalColorTable
{
// mainmenutirp bg color
Color ManuBarCommonColor = Color.Transparent;
// all items border
Color MenuBorderColor = Color.Black;
// mianmenutrip border
Color MenuItemBorderColor = Color.Transparent;
public MenuBarColor()
{
}
#region
public override Color MenuItemPressedGradientBegin
{
get
{
return ManuBarCommonColor;
}
}
public override Color MenuItemPressedGradientEnd
{
get
{
return ManuBarCommonColor;
}
}
public override Color MenuItemPressedGradientMiddle
{
get
{
return ManuBarCommonColor;
}
}
public override Color ButtonSelectedHighlight
{
get
{
return ManuBarCommonColor;
}
}
public override Color MenuItemSelectedGradientBegin
{
get
{
return ManuBarCommonColor;
}
}
public override Color MenuItemSelectedGradientEnd
{
get
{
return ManuBarCommonColor;
}
}
public override Color MenuBorder
{
get
{
return MenuBorderColor;
}
}
public override Color MenuItemBorder
{
get
{
return MenuItemBorderColor;
}
}
#endregion
}
class MenuItemRenderer : ToolStripProfessionalRenderer
{
// text
Font textFont = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
private Color menuItemSelectedColor = Color.Black;
private Color menuItemBorderColor = Color.Red;
public MenuItemRenderer() : base(new MenuBarColor())
{
// item bg color
this.menuItemSelectedColor = Color.Transparent;
// item border
this.menuItemBorderColor = Color.Transparent;
}
protected override void OnRenderItemText(ToolStripItemTextRenderEventArgs e)
{
e.TextFont = textFont;
if (e.Item.IsOnDropDown)
{
e.TextColor = Color.Black;
}
base.OnRenderItemText(e);
}
protected override void OnRenderMenuItemBackground(ToolStripItemRenderEventArgs e)
{
if (e.Item.IsOnDropDown)
{
if (e.Item.Selected == true && e.Item.Enabled)
{
DrawMenuDropDownItemHighlight(e);
}
}
else
{
base.OnRenderMenuItemBackground(e);
}
}
private void DrawMenuDropDownItemHighlight(ToolStripItemRenderEventArgs e)
{
Rectangle rect = new Rectangle();
rect = new Rectangle(2, 0, (int)e.Graphics.VisibleClipBounds.Width - 4, (int)e.Graphics.VisibleClipBounds.Height - 1);
using (SolidBrush brush = new SolidBrush(menuItemSelectedColor))
{
e.Graphics.FillRectangle(brush, rect);
}
using (Pen pen = new Pen(menuItemBorderColor))
{
e.Graphics.DrawRectangle(pen, rect);
}
}
}
问候,
Stanly