Изменить цвет подсветки кнопок WinForms

Вопрос:Я нашел эту страницу, в котором описывается, как изменить рендеринг для MenuStrip и его элементов. Я хочу использовать это, но проблема в том, что цвет подсветки при наведении курсора на кнопку не соответствует ей. Есть ли способ изменить цвет подсветки от синего до желтого? Я пробовал использовать события MouseHover и MouseLeave, но по какой-то причине

Вопрос:

Я нашел эту страницу, в котором описывается, как изменить рендеринг для MenuStrip и его элементов.

Я хочу использовать это, но проблема в том, что цвет подсветки при наведении курсора на кнопку не соответствует ей.

Есть ли способ изменить цвет подсветки от синего до желтого? Я пробовал использовать события MouseHover и MouseLeave, но по какой-то причине они очень медленные, и они меняют кнопку на сплошной цвет, который выглядит плохо, но оставляет границу на краю кнопки, которая не изменяется.

В дизайнере:

this.ButtonName.MouseHover += new System.EventHandler(button_mousehover);

И затем в коде:

private void button_mousehover(object sender, EventArgs e) { Button btn = sender as Button; btn.BackColor = Color.Yellow; }

Есть ли что-нибудь так же просто, как в ссылке, которую я написал выше, чтобы изменить цвет подсветки с синего на что-то еще?

Здесь код для изменения рендеринга полосы меню:

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; } } }

Таким образом, он изменит фон элемента меню с зависанием на оранжево-желтый градиент, изменит его на желто-оранжевый градиент при щелчке, и любой элемент в меню будет иметь золотую подсветку при наведении курсора.

То, что я пытаюсь сделать, это сделать эту последнюю часть (изменить выделение на золото/желтый) для кнопок в моей форме.

Ответ №1

Вы можете посмотреть Button Renderer.

Почему вы хотите переопределить рендеринг, когда можете просто подписаться на событие MouseHover следующим образом:

this.someButtonName.MouseHover += (s,e) => { this.someButtonName.BackColor = Color.Yellow; };

Я рекомендую вам также использовать мышь, чтобы кнопка reset была на ней начального цвета, когда мышь больше не на ней.

Ответ №2

В свойствах кнопки:
в разделе “Внешний вид /FlatStyle ” выберите “Плоский”.
Затем в разделе “Внешний вид /FlatAppearance/MouseOverBackColor ” выберите нужный цвет выделения.

Оцените статью
Добавить комментарий