C#如何让控制onpaint事件
我自己定义了一个控件,每隔50ms刷新一次画图,但是各种事件,比如单击鼠标什么的都会引起重绘使用OnPaint函数,怎么让控件除了我给出的timer1_Tick中的ref...
我自己定义了一个控件,每隔50ms刷新一次画图,但是各种事件,比如单击鼠标什么的都会引起重绘使用OnPaint函数,怎么让控件除了我给出的timer1_Tick中的refresh之外不响应别的事件?
展开
2个回答
展开全部
加一个开关(bool变量)a,只有当timer1_Tick时a才为true。然后你override OnPaint方法,在OnPaint开头判断,如果a不为true直接return,只有a为true时才执行绘图,绘图结束后把a设为false。你看如何?
追问
好棒~不过this.refresh()之后为什么会执行两次OnPaint()?
追答
.NET 控件基类Control的Refresh方法是这样实现的(用Reflector反编译得到代码):
public virtual void Refresh()
{
this.Invalidate(true);
this.Update();
}
可以看到里面两有两行,都会刷新,所以会进两次OnPaint,建议如果单纯刷控件的话只调用Invalidate就够了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询