#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
.