fellanmorgh Ответов: 2

Изменение цвета кнопок на мыши-выход и ввод


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

Что я уже пробовал:

Вот что я имею в виду под этим:

private void ChangeColourOnMouseEnter(object sender, EventArgs e)
{
    this.btnNewGame.BackColor = Color.blue;
    this. btnHelp.BackColor   = Color.blue;
    this.btnExit.BackColor   = Color.blue;
}

private void ChangeColourOnMouseLeave(object sender, EventArgs e)
{
    btnNewGame.BackColor = Color.Yellow;
    btnHelp.BackColor   = Color.Yellow;
    btnExit.BackColor   = Color.Yellow;
}


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

Любая помощь будет оценена по достоинству, спасибо!.

2 Ответов

Рейтинг:
20

phil.o

Если я правильно понял, вы хотите изменить цвет только той кнопки, которая зависла?
Вы можете сделать это вот так:

private void ChangeColourOnMouseEnter(object sender, EventArgs e)
{
   ((Button)sender).BackColor = Color.blue;
}
 
private void ChangeColourOnMouseLeave(object sender, EventArgs e)
{
   ((Button)sender).BackColor = Color.Yellow;
}

То sender параметр содержит ссылку на элемент управления, который вызвал событие.
Этот код сначала отбрасывает sender переменная (объявленная как object) вернуться к своему реальному типу (Button), то назовем его BackColor свойство присваивать ему другой цвет.
Наконец, выберите все кнопки, которые вы хотите иметь такое поведение, и на панели свойств нажмите кнопку события (вверху, прямо под именем и типом элемента управления); назначьте обработчики событий соответствующим событиям. Затем один и тот же обработчик событий сможет обрабатывать событие для каждого из этих элементов управления.

Надеюсь, это поможет.


fellanmorgh

Потрясающе, что сработало идеально. Это действительно простое решение, а также, Спасибо!.

phil.o

Пожалуйста :)

BillWoodruff

+5

phil.o

Спасибо :)

Рейтинг:
1

Dave Kreskowiak

Сделайте свой собственный контроль кнопки. Начните новый класс и наследовать от кнопки.

Переопределите события OnMouseEnter и OnMouseLeave и установите соответствующие цвета кнопок в них. Короткая выборка:

public class ButtonEx : Button
{
    protected override void OnMouseEnter(EventArgs e)
    {
        BackColor = Color.Yellow;
        base.OnMouseEnter(e);
    }

    protected override void OnMouseLeave(EventArgs e)
    {
        BackColor = Color.LightBlue;
        base.OnMouseLeave(e);
    }
}

Конечно, вы можете добавить свойства для управления цветом подсветки по мере необходимости.

Вы можете либо поместить этот код в свой собственный проект класса и добавить ссылку на него в существующий проект, либо просто добавить его как класс в текущее приложение и скомпилировать приложение. После компиляции элемент управления отображается в панели инструментов.