ユーザコントロール上にマウスが入るとユーザーコントロールの色を変える手順
マウスが入った、出たのイベントに色を変えるコードを追加するまでは、すぐに思いつく。
MouseEnterとMouseLeaveのイベントに色を変えるコードを追加する。ここまでは簡単。
private void uc_MouseEnter(object sender, EventArgs e)
{
this.BackColor = Color.YellowGreen;
}
private void uc_MouseLeave(object sender, EventArgs e)
{
this.BackColor = Color.Transparent;
}
しかし、ユーザーコントロール上にラベルがあると、ラベルにマウスが入ると上記のイベントが発生しない。仕方がないので、ラベルにもイベントを登録する。
private void uc_Load(object sender, EventArgs e)
{
foreach (Control lb in this.Controls)
{
lb.MouseEnter += uc_MouseEnter;
lb.MouseLeave += uc_MouseLeave;
}
}
ラベルにイベントを透過する機能があればよいのに。
というかユーザーコントロールは、ときどき、不思議な制約のようなものがある印象。WPFで作れということなのかな。
MouseEnterとMouseLeaveのイベントに色を変えるコードを追加する。ここまでは簡単。
private void uc_MouseEnter(object sender, EventArgs e)
{
this.BackColor = Color.YellowGreen;
}
private void uc_MouseLeave(object sender, EventArgs e)
{
this.BackColor = Color.Transparent;
}
しかし、ユーザーコントロール上にラベルがあると、ラベルにマウスが入ると上記のイベントが発生しない。仕方がないので、ラベルにもイベントを登録する。
private void uc_Load(object sender, EventArgs e)
{
foreach (Control lb in this.Controls)
{
lb.MouseEnter += uc_MouseEnter;
lb.MouseLeave += uc_MouseLeave;
}
}
ラベルにイベントを透過する機能があればよいのに。
というかユーザーコントロールは、ときどき、不思議な制約のようなものがある印象。WPFで作れということなのかな。
コメント
コメントを投稿