2010-10-03 84 views
0

我写了一个扩展Button的组件。在其OnPaint事件中更改按钮

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

这怎么办?

回答

3

是否要重绘组件?致电RefreshInvalidate

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)); 
} 
相关问题