定义了一个控件,鼠标进入时,给这个控件所在的父控件(Panel)添加几个小控件,小控件位置在该控件的上面,鼠标离开时,让小控件消失.鼠标在小控件上时,鼠标变成手形,可是,这样做,程序应该没问题,就是小控件不响应事件,好像从没有捕捉到鼠标.
   //鼠标进入,添加小控件
    protected override void OnMouseEnter(EventArgs e)
        {
            base.OnMouseEnter(e);
            if (diyicijin == true)
            {   
                shang.Location = new Point(this.Left-7, this.Top + 4);
                xia.Location = new Point(this.Left -7, this.Top + 19);
                zhongjian.Location = new Point(this.Left + 21, this.Top + 11);
                shang.Size = new Size(200, 23);
                zhongjian.Size = new Size(100, 23);
                xia.Size = new Size(200, 23);
                this.Parent.Controls.Add(shang);
                this.Parent.Controls.Add(xia);
                this.Parent.Controls.Add(zhongjian);
 
                shang.BringToFront();
                zhongjian.BringToFront();
                xia.BringToFront();                diyicijin = false;           
            }
             if(yidong.Visible!=true)
            {
                shang.Visible = true;
                xia.Visible = true;
                zhongjian.Visible = true;
                shang.BringToFront();
                zhongjian.BringToFront();
                xia.BringToFront();
            }
        }
//鼠标离开小控件不可见
        protected override void OnMouseLeave(EventArgs e)
        {
            base.OnMouseLeave(e);
            shang.Visible = false;
            xia.Visible = false;
           zhongjian.Visible = false;
        }
//进入小控件时,小控件的光标变成手形
        private void shang_MouseEnter(object sender, EventArgs e)
        {
            MessageBox.Show("a");
            this.shang.Cursor = Cursors.Hand;
        }
不知道为什么,请帮忙解决,谢谢

解决方案 »

  1.   


    在添加控件时加上如下代码。
    shang.MouseMove += new System.Windows.Forms.MouseEventHandler(this.msMove);
      

  2.   

    shang.MouseEnter += new System.Windows.Forms.MouseEventHandler(this.shang_MouseEnter);
      

  3.   

    不行,shang的事件我注册了.鼠标一到shang时就发生了
      protected override void OnMouseLeave(EventArgs e)
            {
                base.OnMouseLeave(e);
                shang.Visible = false;
                xia.Visible = false;
               zhongjian.Visible = false;
            }
    所以表示上已经不可见...怎么解决啊
      

  4.   

    你这是把Form的MouseLeave重载了吧?把override 去掉看看。protected override void OnMouseLeave(EventArgs e)
      

  5.   

    当你的鼠标离开Form的时候就会触发OnMouseLeave,这样就把你的控件隐藏了。
      

  6.   

    把 override 去掉啊。
    为什么非要重载Form的MouseLeave。
      

  7.   

    我是自定义控件,所以要override
      

  8.   

    我是自定义控件,所以要override
    ---------------
    ???? 不懂了。