ユーザコントロール上にマウスが入るとユーザーコントロールの色を変える手順

マウスが入った、出たのイベントに色を変えるコードを追加するまでは、すぐに思いつく。

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で作れということなのかな。

コメント

このブログの人気の投稿

varchar をデータ型 numeric に変換中に、算術オーバーフロー エラーが発生しました。