首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >更改WinForms按钮突出显示颜色

更改WinForms按钮突出显示颜色
EN

Stack Overflow用户
提问于 2015-01-08 03:01:11
回答 1查看 25.9K关注 0票数 6

我找到了this page,它概述了如何更改MenuStrip及其项的呈现方式。

我想使用它,但问题是当你将鼠标悬停在按钮上时,突出显示的颜色与它不匹配。

有没有办法把突出显示的颜色从蓝色改成黄色?我尝试过使用MouseHover和MouseLeave事件,但由于某些原因,它们非常慢,而且它们将按钮更改为纯色,这看起来很糟糕,但会在按钮的边缘留下一个不变的边框。

在设计器中:

代码语言:javascript
复制
this.ButtonName.MouseHover += new System.EventHandler(button_mousehover);

然后在代码中:

代码语言:javascript
复制
private void button_mousehover(object sender, EventArgs e)
{
    Button btn = sender as Button;
    btn.BackColor = Color.Yellow;
}

有没有像我在上面发布的链接一样简单的将突出显示颜色从蓝色更改为其他颜色?

下面是更改菜单条呈现方式的代码:

代码语言:javascript
复制
private void myForm Load(object sender, EventArgs e)
{
    myMenuStrip.Renderer = new MenuRenderer();
{

private class MenuRenderer : ToolStripProfessionalRenderer
{
    public MenuRenderer() : base(new MyColors()) { }
}

private class MyColors : ProfessionalColorTable
{
    public override Color MenuItemSelectedGradientBegin
    {
        get { return Color.Orange; }
    }
    public override Color MenuItemSelectedGradientEnd
    {
        get { return Color.Yellow; }
    }
    public override Color MenuItemPressedGradientBegin
    {
        get{ return Color.Yellow; }
    }
    public override Color MenuItemPressedGradientEnd
    {
        get { return Color.Orange; }
    }
    public override Color MenuItemSelected
    {
        get { return Color.Gold; }
    }
}

因此,它会将悬停在菜单项上的背景更改为橙色-黄色渐变,并在单击时将其更改为黄色-橙色渐变,菜单中的任何项目在悬停时都会有金色高亮显示。

我要做的是对表单中的按钮执行最后一部分(将突出显示更改为金色/黄色)。

EN

回答 1

Stack Overflow用户

发布于 2015-01-08 03:03:39

你可以看看Button Renderer

当您可以像这样简单地订阅MouseHover事件时,为什么要覆盖渲染器:

代码语言:javascript
复制
this.someButtonName.MouseHover += (s,e) => 
{
   this.someButtonName.BackColor = Color.Yellow;
};

我建议你也使用鼠标左键,以便在鼠标不在上面时将按钮重置为初始颜色。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27826699

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档