刚开始接触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变色的效果、
望各位大大指出我的代码缺少了什么?抑或哪里有错、感激不尽%>_<%、、、、
在自定义控件里用委托写了“控件_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变色的效果、
望各位大大指出我的代码缺少了什么?抑或哪里有错、感激不尽%>_<%、、、、
{
InitializeComponent();
this.Paint += new PaintEventHandler(GdlbJtControl_Paint);
this.MouseHover += new PaintEventHandler(GdlbJtControl_MouseHover);
this.MouseLeave += new PaintEventHandler(GdlbJtControl_MouseLeave);
PaintJtStatus();
}
mouse事件应该不属于Paint范围
我new PaintEventHandler 会报错
改成EventHandler就对了、真是谢谢了