问题描述
所以,我有一个工具条菜单,我将其颜色更改为深色(并在我的 SwitchTheme
空白处覆盖了它的渲染器)。
我也需要覆盖它的项目。我想从下拉菜单中默认项目背景颜色和菜单边框,而不是总是写:MenuItemNametoolStripMenuItem.BackColor = Color.DimGray;
为每个单独的菜单项。
我该怎么做?
这是我已经覆盖的属性。
public class TestColorTable : ProfessionalColorTable
{
Color LightIshGray = Color.FromArgb(55,55,55);
public override Color MenuBorder
{
get { return Color.FromArgb(45,45,45); }
}
public override Color MenuItemSelected
{
get { return LightIshGray; }
}
public override Color MenuItemBorder
{
get { return LightIshGray; }
}
public override Color MenuItemSelectedGradientBegin
{
get { return LightIshGray; }
}
public override Color MenuItemSelectedGradientEnd
{
get { return LightIshGray; }
}
public override Color MenuItempressedGradientBegin
{
get { return LightIshGray; }
}
public override Color MenuItempressedGradientEnd
{
get { return LightIshGray; }
}
}
实际上使我的虚空内部变暗的覆盖方法(或者将其放入表单加载中)。
TopMenu.Renderer = new ToolStripProfessionalRenderer(new TestColorTable());
解决方法
你可以简单地使用你的技术来做到这一点,因为我很高兴我为你写了它。据我所知,您还需要单独制作背景色/前景色,因为它们是另一个组件集的独立组件,就像您设置 MenuStrip 的背景色和前景色一样。
您需要添加一些其他内容来覆盖下拉列表,除此之外,您可能希望将下拉箭头更改为白色。
为此,添加一个使用颜色表的渲染器。见下文。
另外,将当前定义 def score_board(self):
if self.game_over:
self.end_score = self.score
self.last_Score.append((self.end_score))
if len(self.last_Score) > self.game_number:
del self.last_Score[-1]
try:
self.last_Score_Label = "Your last score is" + str(self.last_Score[-2])
except:
self.last_Score_Label = "Your last score is " + str(self.last_Score[-1])
print(self.last_Score)
的 enderer 的方式更改为:
TopMenu
TopMenu.Renderer = new BlueIshModeToolStripArrow();
public class RendererName: ToolStripProfessionalRenderer
{
public RendererName() : base(new DarkModeColorTable())
{
}
protected override void OnRenderArrow(ToolStripArrowRenderEventArgs e)
{
var tsMenuItem = e.Item as ToolStripMenuItem;
if (tsMenuItem != null)
e.ArrowColor = Color.White;
base.OnRenderArrow(e);
}
}