如何刷新winform窗体内自定义的控件

probing 2004-10-31 01:30:28
自己写的一个控件,
里面包括了一个panel
现在我要在panel里面画一个矩形
现在我的做法是写了panel的paint事件处理函数
这样窗口载入时是可以的,
但是我再想改变这个矩形的大小就不知道怎么做了……
调用改变大小后调用refresh方法貌似不行
请大虾帮忙看一看
//对于这样的情况这种做法是否合适?常用的方法是什么样的?(偶刚学.net)
...全文
227 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
bacon_1982 2004-10-31
  • 打赏
  • 举报
回复
是这样的,不过补充一下,

Invalidate()只是让区域内的控件不再有效,但有时候会因为队列中等待处理的事件会导致实际调用OnPaint()的时延(控件很多的时候),所以在Invalidate后面调用Update()会立即调用Onpaint(),他会绘制任何无效的区域。

....panel1_resize(...){

this.panel1.Invalidate();
this.panel1.Update();
}
北京的雾霾天 2004-10-31
  • 打赏
  • 举报
回复
//试试如下的代码:
private void panel1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
{
e.Graphics.DrawRectangle(System.Drawing.SystemPens.ControlText, 5,5, this.panel1.Width-10, this.panel1.Height-10);
}

private void panel1_Resize(object sender, System.EventArgs e)
{
this.panel1.Invalidate();
}
北京的雾霾天 2004-10-31
  • 打赏
  • 举报
回复
用Invalidate();
或其重载的函数不可以吗?

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧