[英]Tool strip menu item changes its color by itself when cursor leaves activated item
我已經創建了Windows窗體工具,並添加了一個包含幾個項目的菜單條和一個下拉菜單。 一切正常,當我選擇下拉菜單項“文件”時,它會正確展開。 但是,當光標離開工具條菜單項“文件”到下拉菜單項時,它會自動將其顏色更改為白色,從而使您無法再讀取白色文本:
之前,菜單欄的顏色更改也存在類似的問題,因此我已經定義了渲染器:
class BlueRenderer : ToolStripProfessionalRenderer
{
protected override void OnRenderMenuItemBackground(ToolStripItemRenderEventArgs e)
{
if (!e.Item.Selected)
{
base.OnRenderMenuItemBackground(e);
e.Item.BackColor = Color.MediumBlue;
}
else
{
Rectangle rc = new Rectangle(Point.Empty, e.Item.Size);
e.Graphics.FillRectangle(Brushes.Blue, rc);
e.Graphics.DrawRectangle(Pens.MediumBlue, 1, 0, rc.Width - 2, rc.Height - 1);
e.Item.BackColor = Color.MediumBlue;
base.OnRenderItemBackground(e);
e.Item.BackColor = Color.MediumBlue;
}
}
protected override void OnRenderItemText(ToolStripItemTextRenderEventArgs e)
{
base.OnRenderItemText(e);
if (!e.Item.Selected)
{
e.Item.ForeColor = SystemColors.ControlLightLight;
}
else
{
e.Item.ForeColor = SystemColors.ControlLightLight;
}
}
}
我認為我必須在渲染器中更改另一種屬性或行為,但我什至不知道哪個屬性或如何更改它。 請幫助我,當鼠標光標離開該元素時,將itemcolor保持為藍色/中等藍色。
干杯
弗洛里安
通過嘗試一些渲染器選項找到了解決方案:我刪除了以前的“ BlueRenderer”,而是指定了ProfessionalColorTable:
public class ownColorTable : System.Windows.Forms.ProfessionalColorTable
{
public override Color MenuItemPressedGradientBegin
{
get
{
return Color.Blue;
}
}
public override Color MenuItemPressedGradientEnd
{
get
{
return Color.Blue;
}
}
然后,按如下方式初始化ToolStripProfessionalRenderer:
menuStrip1.Renderer = new ToolStripProfessionalRenderer(new ownColorTable());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.