2010-11-30 12 views
1

私のような何かを試してみた:コントロールを再描画しないようにするにはどうすればよいですか?

horizontalPictureScroller1.SuspendLayout(); 
horizontalPictureScroller1.DeleteSelectedImages(); 
horizontalPictureScroller1.ResumeLayout(); 

をしかし、私はDeleteSelectedImages()メソッドを実行すると、それはまだ視覚的に遅れています。

コントロールを再描画しないように手動でコントロールするように指示する方法がありますか? Windowsフォームおよび.NET 4

+0

あなたはそれを視覚的に遅れています何を意味するのですか? ResumeLayout()の後に何をしていますか? – plinth

+0

二重バッファリングをオンにしてちらつきを取り除いてみましたか? – w69rdy

+0

あなたはあなたのものをやっている間、あなたはOnRenderを上書きできますか? –

答えて

2

私はあなたの問題は、削除操作中に画面の更新はちらつきが生じていることであると仮定を使用して

SuspendLayoutメソッドとResumeLayourメソッドonly suspend the layout of the control。再描画やサイズ変更によるコントロールの停止はありません。

コントロールでDoubleBufferingを有効にする必要があります。

ここで使用しているWinFormsコントロールから派生した新しいコントロールクラスを作成する必要があります。このクラスのコンストラクタでは、SetStyleメソッドを使用してダブルバッファリングを有効にします。

コントロールhorizontalPictureScroller1がピクチャであると仮定すると -

class MyControl : System.Windows.Forms.PictureBox 
    { 
     public MyControl() 
     { 
      this.SetStyle(ControlStyles.DoubleBuffer | 
       ControlStyles.UserPaint | 
       ControlStyles.AllPaintingInWmPaint, 
       true); 
     } 
    } 
+0

うん、それはそれを解決しました。ありがとう! –

関連する問題