当前位置: 代码迷 >> .NET组件控件 >> 关于一个自定义控件的有关问题
  详细解决方案

关于一个自定义控件的有关问题

热度:8753   发布时间:2013-02-25 00:00:00.0
关于一个自定义控件的问题
新建一个控件库,然后在里面拖放一个button按钮,再给这个按钮添加mouseenter事件,代码如下:
C# code
LinearGradientBrush brush = new LinearGradientBrush(button1.ClientRectangle, Color.Red ,                Color.Brown ,LinearGradientMode.ForwardDiagonal);            Graphics g = button1.CreateGraphics();            g.FillRectangle(brush, button1.ClientRectangle);            g.Dispose();
为什么当执行的时候就是没法显示呢?

------解决方案--------------------------------------------------------
添加自定义控件继承于Button类,然后添加MouseEnter,MouseLeave。重写OnPaint事件
bool _enter=false;
void testButton_MouseLeave(object sender, EventArgs e)
{
_enter = false;
}

void testButton_MouseEnter(object sender, EventArgs e)
{
_enter = true;
}



protected override void OnPaint(PaintEventArgs pevent)
{
base.OnPaint(pevent);
if (_enter)
{
LinearGradientBrush brush = new LinearGradientBrush(this.ClientRectangle, Color.Red,
Color.Brown, LinearGradientMode.Horizontal);
Graphics g = pevent.Graphics;
g.FillRectangle(brush, this.ClientRectangle);
}

}
------解决方案--------------------------------------------------------
C# code
private bool _enter;        protected override void OnMouseEnter(EventArgs e)        {            _enter = true;            base.OnMouseEnter(e);        }        protected override void OnMouseLeave(EventArgs e)        {            _enter = false;            base.OnMouseLeave(e);        }        protected override void OnPaint(PaintEventArgs e)        {            base.OnPaint(e);        }
  相关解决方案