刚开始接触winform、写了一个自定义控件、相当于一个按钮、鼠标放上去会变颜色、拿下来的时候颜色又会恢复
在自定义控件里用委托写了“控件_mousehover”和“控件_mouseleave”两个方法、但是把控件拉到form窗体上的时候、
事件毫无效果、只有点击此控件、从事件列表里双击以上两个事件、重新调用变颜色方法及赋参数、才会生效
      private void test1_MouseHover(object sender, EventArgs e)
        {
            this.test1.PaintJtStatus(Week.GdlbJtControl.JtStatus.MOUSE_OVER);
        }        private void test1_MouseLeave(object sender, EventArgs e)
        {
            this.test1.PaintJtStatus();
        }
        private void test2_MouseHover(object sender, EventArgs e)
        {
            this.test2.PaintJtStatus(Week.GdlbJtControl.JtStatus.MOUSE_OVER);
        }        private void test2_MouseLeave(object sender, EventArgs e)
        {
            this.test2.PaintJtStatus();
        }
而自定义控件的cs类中、此代码已写上
        public GdlbJtControl()
        {
            InitializeComponent();
            this.Paint += new PaintEventHandler(GdlbJtControl_Paint);
            PaintJtStatus();
        }
        private void GdlbJtControl_MouseHover(object sender, EventArgs e)
        {
            PaintJtStatus(JtStatus.MOUSE_OVER);
        }
        //鼠标移出
        private void GdlbJtControl_MouseLeave(object sender, EventArgs e)
        {
            PaintJtStatus();//此方法不会出错、否则在窗体内调用也会无效果
        }大致就是这样、因为窗体中要用不止一个此控件、每一个控件都要双击生成事件再调用的话、感觉不是那么一回事
应该可以实现:控件设计好、直接拖到窗体上就具有mouseleave/hover变色的效果、
望各位大大指出我的代码缺少了什么?抑或哪里有错、感激不尽%>_<%、、、、

解决方案 »

  1.   

    加上事件处理:public GdlbJtControl()
      {
      InitializeComponent();
      this.Paint += new PaintEventHandler(GdlbJtControl_Paint);
      this.MouseHover += new PaintEventHandler(GdlbJtControl_MouseHover);
      this.MouseLeave += new PaintEventHandler(GdlbJtControl_MouseLeave);
      PaintJtStatus();
      }
      

  2.   

    多谢两位O(∩_∩)O
    mouse事件应该不属于Paint范围
    我new PaintEventHandler 会报错
    改成EventHandler就对了、真是谢谢了