2011-02-15 71 views
0

我有一個C#應用程序,它有一個mainform和幾個自定義用戶控件。C#用戶控件重繪

當我移動mainform時,用戶控件繼續重繪,當我停止移動mainform時,它們再次重繪。

我該怎麼做才能禁用此重新繪製?

+0

有沒有閃爍的屏幕?你想停止閃爍 – Nighil 2011-02-15 08:42:02

回答

0

如果它的閃爍令人討厭,你可以嘗試將控件上的DoubleBuffered屬性設置爲true。

以外,你可以訂閱的形式移動事件,並以類似的方式,以什麼在這個問題描述關閉畫上的子控件...

Have a look here

+0

嗯......問題是,當mainform移動時,我沒有重新繪製控件時根本沒有繪製控件。我想要的:只有當mainform移動時,重繪子控件#1並保持原樣(不重繪)。 – jfronner 2011-02-15 09:33:01

0

你不應該強行無效()自己。我假設你在控制中進行一些自定義繪畫?在InitializeComponent()之後的構造函數中;你有

SetStyle(ControlStyles.UserPaint, true); 
    SetStyle(ControlStyles.AllPaintingInWmPaint, true); 

2

this previous question的回答討論瞭如何使用WM_SETREDRAW Win32 API暫停和恢復繪製。它包含一個漂亮的包裝類;也許它會幫助你。