Вопрос:
Я нашел эту страницу, в котором описывается, как изменить рендеринг для 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 ” выберите нужный цвет выделения.