在其OnPaint事件中对Button进行更改

时间:2010-10-03 13:25:30

标签: c# c#-3.0

我写了一个扩展Button的组件。

我自定义了OnPaint()个事件。我动态地进行了一些更改,并希望使用这些新细节刷新我的组件。

如何做到这一点?

2 个答案:

答案 0 :(得分:3)

您想重绘组件吗?致电RefreshInvalidate

答案 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));
}