首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OnPaint不更新

OnPaint不更新
EN

Stack Overflow用户
提问于 2013-01-11 16:42:48
回答 2查看 2K关注 0票数 2

我有一个包含用户控件的windows窗体。此用户控件具有以下代码:

代码语言:javascript
复制
protected override void OnPaint(PaintEventArgs pe)
{
  base.OnPaint(pe);
  pe.Graphics.DrawRectangle(
       new Pen(Color.Red, 5 + laenge), 
       new Rectangle(
             new Point(50 + leerzeichen, hoehe), 
             new Size(laenge + 20, 20)));
}

和一些更多的代码,这些现在可能并不重要。所以当我启动程序的时候,它会画一个红色的矩形。在程序开始时,所有变量(laenge、leerzeichen、hoehe)都设置为0。现在,当我按下一个按钮时,变量正在改变,但是OnPaint没有画出新的矩形?可能的问题是什么?我必须以某种方式调用OnPaint吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-11 16:46:29

您需要在更改变量(它调用OnPaint Invalidate() )之后调用内部

票数 5
EN

Stack Overflow用户

发布于 2013-01-11 16:52:44

您不能直接调用OnPaint。

相反,由于继承自Win32 (InvalidateRect()),控件的区域需要无效(例如,通过调用Invalidate()),以使窗口在刷新期间调用控件的OnPaint方法。(参见this question)

请注意,只有当应用程序等待Windows消息队列时(即,它已完成处理用户请求或调用Application.DoEvents()),操作系统才能处理绘制/刷新请求。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14274439

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档