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

#c# #winforms

#c# #winforms

Вопрос:

Хорошо, у меня много кнопок. Я получил событие mouse_click для попеременного изменения заднего цвета между светло-синим и светло-серым для каждого из них, используя:

     private void alternateColor(Control ctrl)
    {
        switch (ctrl.BackColor.Name)
        {
            case "LightGray":
                ctrl.BackColor = Color.LightBlue;
                break;
            default:
                ctrl.BackColor = Color.LightGray;
                break;
        }
    }
    private void matrixButtonClick(object sender, MouseEventArgs e)
    {
        alternateColor(sender as Control);              
    }
  

Что я хочу иметь возможность делать, так это менять цвет кнопок один раз при каждом наведении на них курсора и удержании нажатой левой кнопки мыши. Итак, если я удерживаю щелчок левой кнопкой мыши, перемещаю, скажем, 6 светло-серых кнопок, они становятся светло-синими и т.д.

У меня есть это, но оно не работает:

     private void matrixMouseHover(object sender, EventArgs e)
    {
        if (Control.MouseButtons == System.Windows.Forms.MouseButtons.Left)
        {
            alternateColor(sender as Control);
        }
    }
  

Буду признателен за любую помощь, спасибо 🙂

Комментарии:

1. кажется, это должно быть событие перетаскивания вместо наведения курсора мыши, вы можете распечатать Control.MouseButtons или поставить точку останова if , чтобы проверить это

Ответ №1:

Я думаю, что для начала вы неправильно поняли, что означает «наведение» в этом контексте. «Наведение» не означает просто наведения указателя мыши на что-либо. Это означает, что указатель мыши должен быть наведен на что-либо и останавливаться неподвижно. Вы просто говорите о MouseEnter событии, не MouseHover .