Прозрачность влияет только на рисование, а не на события мыши. Флажок получает события мыши, это, в свою очередь, означает, что когда вы наводите курсор мыши на этот флажок, ваш элемент управления получает событие MouseLeave. Чтобы гарантировать, что цвет фона меняется, даже когда дочерний элемент управления (на любом уровне) получает событие MouseEnter, вам нужно отследить, что интересующий элемент управления - или любой дочерний элемент, grand-child ..etc--, наведен на мышь Это. Чтобы сделать это, пройти через все элементы управления потомка и перехватить соответствующие события для них. Для этого попробуйте что-то похожее на класс ниже.
public partial class MyControl : UserControl
{
public MyControl()
{
InitializeComponent();
AttachMouseEnterToChildControls(this);
}
void AttachMouseEnterToChildControls(Control con)
{
foreach (Control c in con.Controls)
{
c.MouseEnter += new EventHandler(control_MouseEnter);
c.MouseLeave += new EventHandler(control_MouseLeave);
AttachMouseEnterToChildControls(c);
}
}
private void control_MouseEnter(object sender, EventArgs e)
{
this.BackColor = Color.AliceBlue;
}
private void control_MouseLeave(object sender, EventArgs e)
{
this.BackColor = SystemColors.Control;
}
}