0

としてWPF UserControl表示される があります。WinformElement Host

画面サイズをすばやく変更したり、サイズを変更したりすると、UserControl が適切なサイズになるまで、背景に黒いフラッシュバックが表示されます。

私はそれについていくつかの場所で読みました。

私がそれらを読んだすべての場所で、それはUserControl Loadでのみ発生し、それに応じてソリューションをもたらします。

Resizeで起こっていることについて話しているのを見た1つの質問。しかし、そこで提供される解決策はLoadにもあります。

elementhost のサイズ変更時の黒の背景

画面のサイズ変更で次のことを試してみましたUserControl.CreateGraphics ();。上記の回答のように黒い線は残りません。

LoadではなくResizeで使用したためだと思います。

その上、何も見つかりませんでした。

誰かがこれに遭遇して解決策を見つけた場合、私は答えたいと思います.

4

2 に答える 2

0

多くのコントロールを持つフォームを使用して Windows アプリケーションを開発しているときに、ちらつきの問題に直面することがよくあります。このちらつきをなくす非常に優れた方法は、フォーム全体とその子コントロールをダブル バッファリングすることです。ただし、これによりコントロールの描画が高速化されることはありませんが、画面がしばらく保持され、ちらつきの代わりに更新された画面が表示されます。これを実装するには、WS_EX_COMPOSITED フラグを有効にする必要があります。次のコードをフォームのコードに追加するだけです。

C#:

protected override CreateParams CreateParams
{
   get 
    {
    CreateParams cp = base.CreateParams;
    cp.ExStyle |= 0x02000000; 
    // Turn on WS_EX_COMPOSITED
   return cp;
   }
}

VB.net:

Protected Overrides ReadOnly Property CreateParams() As CreateParams
 Get
    Dim cp As CreateParams = MyBase.CreateParams
cp.ExStyle = cp.ExStyle Or &H2000000  
    Return cp 
  End Get
 End Property
于 2013-09-11T07:34:13.037 に答える
-2

最後に、次のコード行に何が役立ちWinformましたか( ):

    protected override void OnResize(EventArgs e)
    {
        this.SuspendLayout();
        base.OnResize(e);
        this.ResumeLayout();
    }
于 2013-09-12T11:59:26.477 に答える