У меня есть следующая проблема: у меня есть панель, которая имеет определенный цвет, например красный. Когда пользователь нажимает на мышь, цвет этой панели сохраняется в переменной. Затем пользователь перемещается, его мышь все еще нажата, на другую панель. Когда он отпускает мышь, эта панель должна получить цвет фона первого, который был сохранен в переменной. Мой код выглядит примерно так:Событие для мыши не срабатывает
public Color currentColor;
private void ColorPickMouseDown(object sender, MouseEventArgs e)
{
Panel pnlSender = (Panel)sender;
currentColor = pnlSender.BackColor;
}
private void AttempsColorChanger(object sender, MouseEventArgs e)
{
Panel pnl = (Panel)sender;
pnl.BackColor = currentColor;
}
Мне нужно сначала определить отправителя, потому что существует много возможных панелей, которые могут инициировать это событие. Первый метод MouseDown работает полностью, цвет хорошо сохраняется в переменной. Секон, однако, даже не срабатывает, когда пользователь делает то, что я описал выше. Когда ser нажимает на вторую панель, он работает (есть часть MouseUp в щелчке, как я полагаю).
Что здесь не так? Почему событие не срабатывает, когда пользователь удерживает клавишу мыши раньше?
Возникает ли событие mouse up, если вы оставите мышь над первой панелью (щелкните вниз, затем вверх, не двигаясь)? Я подозреваю. – Gjeltema
Да, это так. Кажется, что программа не отслеживает положение мыши больше после события MouseDown ... – tomet
Фактически это фиксируется вашей исходной панелью, то есть событием 'MouseUp', которое запускается. –