我写了一个扩展Button的组件。
我自定义了OnPaint()
个事件。我动态地进行了一些更改,并希望使用这些新细节刷新我的组件。
如何做到这一点?
答案 0 :(得分:3)
您想重绘组件吗?致电Refresh
或Invalidate
。
答案 1 :(得分:1)
无需任何特殊功能,只要按钮获得第一个绘图通知,您的自定义代码就会被使用。可能的错误是base.OnPaint()调用的位置。例如,这不起作用:
protected override void OnPaint(PaintEventArgs e) {
// Wrong order:
e.Graphics.DrawRectangle(Pens.Black, new Rectangle(3, 3, Width - 7, Height - 7));
base.OnPaint(e);
}
base.OnPaint()方法绘制按钮的默认外观,消除您的自定义。在绘制你的东西之前你必须先调用base.OnPaint():
protected override void OnPaint(PaintEventArgs e) {
base.OnPaint(e);
e.Graphics.DrawRectangle(Pens.Black, new Rectangle(3, 3, Width - 7, Height - 7));
}