protected override void OnPaint(PaintEventArgs e)在何时运行?

haodd123 haodd123 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
protected override void OnPaint(PaintEventArgs e)在何时运行?


我下载了一些源码,看到有人在窗体代码里有:
protected override void OnPaint(PaintEventArgs e)
{
Graphics g = e.Graphics;
..........
}
这样的写法,来在窗体上边画一些图案。
查到Form里有:
protected override void OnPaint(PaintEventArgs e);
//
//
// 参数:
// e:
// 包含事件数据的 System.EventArgs。
[EditorBrowsable(EditorBrowsableState.Advanced)]

开始搞不清她是方法,还是事件?(即如果是方法,不知道她是何时被调用的?)

后来回忆起,老师讲C#语言规范时,拿事件event举例:写事件的发行者时触发事件要 提供一个受保护的虚拟方法,来触发事件,即按老师说的上边Form里
应该是这样的:
protected override void OnPaint(PaintEventArgs e);
{
PaintEventHandler handler = paint;
//声明一个临时的委托,防止可能的线程同步
if (handler != null)
{
handler(this, e);
}
}

public delegate void PaintEventHandler (object sender,PubEventArgs e);//声明所需代理
public event PaintEventHandler paint;//事件的声明


他是重写了这个受保护的虚拟方法吗?他是在哪被触发而运行的呢?
好像有点乱,呵呵
...全文

相关推荐

评论 4
收藏 已收藏
分享
返回顶部
haodd123
C# 111,129 成员 642,538 内容