BackColor - это свойство ambient.Это не работает правильно, потому что вы устанавливаете метки BackColor явно.Щелкните правой кнопкой мыши свойство BackColor надписей и выберите «Сброс», чтобы оно больше не отображалось жирным шрифтом.Изменение BackColor панели теперь также автоматически изменит BackColor меток.
Это, тем не менее, не решит вашу проблему.Событие MouseLeave панели будет срабатывать, когда вы наводите указатель мыши на одну из меток.В Winforms нет чистого решения для этого, подписка на все метки и события MouseEnter / Leave панели не устраняют угловые случаи.Например, когда пользователь очень быстро перемещает мышь от метки, которая находится близко к краю панели.Вы получите MouseLeave для метки, но не MouseEnter + Leave для панели.
Единственным хорошим решением для этого является таймер или событие Application.Idle.Как это:
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
Application.Idle += Application_Idle;
}
protected override void OnFormClosed(FormClosedEventArgs e) {
Application.Idle -= Application_Idle;
base.OnFormClosed(e);
}
void Application_Idle(object sender, EventArgs e) {
var pos = panel1.PointToClient(Cursor.Position);
if (panel1.DisplayRectangle.Contains(pos)) panel1.BackColor = Color.Red;
else panel1.BackColor = this.BackColor;
}
}