2012-04-19 46 views
0

你知道如何強制一個Richtextbox只重繪它的前景(不是背景)。強制Richtextbox重繪其前景

我應該發送一條消息還是類似的東西?

謝謝!

+0

你嘗試過什麼嗎? – 2012-04-19 12:55:48

回答

0

您可以覆蓋OnPaintBackground方法。

protected override void OnPaintBackground(PaintEventArgs pevent) 
{ 
    if (_I_need_to_paint_background) { 
     base.OnPaintBackground(pevent) 
    } 
} 

原因,這意味着你必須派生自己的RichTextBox形成原始

public class MyRichTextBox : RichTextBox 
{ 
    ... 

    protected override void OnPaintBackground(PaintEventArgs pevent) 
    { 
     // Your background painting logic goes here 
    } 

    protected override void OnPaint(PaintEventArgs e) 
    { 
     // Your foreground painting logic goes here 
    } 
} 

隨着控制Invalidate方法,你可以告訴他們應重繪自己控制。 Refresh方法使控件失效,並通知它立即重繪(使用OnPaintBackgroundOnPaint)。

+0

問題是,我想要繪製背景,然後強制再次在其上繪製前景... – alexandertr 2012-04-19 13:12:17

+0

您可以在'OnPaintBackground'中實現自己的背景繪製邏輯,或者,如上所示,用'OnPaint'繪製。然後你的前景繪圖邏輯進入「OnPaint」。總是在那裏做你所有的繪畫。你可以調用'Invalidate'來觸發重繪。 – 2012-04-19 13:30:48

+0

請參閱我編輯的答案。 – 2012-04-19 13:38:59