透明は描画にのみ影響し、マウスイベントには影響しません。チェックボックスはマウスイベントを取得しています。これは、チェックボックスにマウスを合わせると、コントロールがMouseLeaveイベントを受信することを意味します。子コントロール(任意のレベル)がMouseEnterイベントを取得した場合でも、背景色を確実に変更するには、対象のコントロール(または子、孫など)がマウスを上に置いていることを追跡する必要があります。それ。これを行うには、すべての子孫コントロールを繰り返し、それらに適切なイベントをインターセプトします。これを行うには、以下のクラスのようなものを試してください。
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;
}
}