Метод C#, применяемый ко всем элементам управления на панели
Я пытаюсь разработать систему, в которой пользователь может прокручивать flowLayoutPanel, который содержит список на панелях (которые создаются динамически). На каждой панели есть поле для изображений и две метки. Когда пользователь наводит указатель мыши на панель, я хочу, чтобы фоновое изображение панели изменилось.
До сих пор я сделал эти методы:
private void pnlMouseHover(object sender, EventArgs e)
{
Panel panel1 = sender as Panel;
panel1.BackgroundImage = STUDIO2.Properties.Resources.buttonbackgroundmouseover;
}
private void pnlMouseLeave(object sender, EventArgs e)
{
Panel panel1 = sender as Panel;
panel1.BackgroundImage = STUDIO2.Properties.Resources.buttonbackground;
}
Они работают просто отлично, но при запуске системы эти методы запускаются только тогда, когда мышь находится над той частью панели, которая не закрыта надписью или картинкой.
Как я могу изменить это, чтобы при наведении курсора мыши на области внутри панели, которые покрыты меткой или картинкой, фоновое изображение меняется?
1 ответ
Возможности решения этого безграничны. Вот один из способов.
Вход и выход
Измени свой panel_Hover
событие в panel_Enter
так что событие не запускается постоянно.
Условный выход
Проверьте положение указателя перед удалением изображения.
private void pnlMouseLeave(object sender, EventArgs e)
{
Panel panel1 = sender as Panel; // ← Your code
Point mousePosition = PointToClient(Control.MousePosition);
bool hasPointerInside = panel1.ClientRectangle.Contains(mousePosition);
if (!hasPointerInside)
{
// Your code ↓
panel1.BackgroundImage = STUDIO2.Properties.Resources.buttonbackground;
}
}