5

ShowDialogいくつかのテキスト ボックス、ラベル、およびボタンを含むフォームを使用しています。私が抱えている問題は、フォーム自体と他のコントロールが描画される前にテキスト ボックスが描画されていることです。

メソッドをオーバーライドしていますOnPaintが、これが問題の原因であるかどうかはわかりません:

protected override void OnPaint(PaintEventArgs e)
{
    ControlPaint.DrawBorder(e.Graphics, e.ClipRectangle, Color.Black, ButtonBorderStyle.Solid);
    base.OnPaint(e);
}

わずかな遅延ですが、目に見えて迷惑です。ありがとうございました。

ちなみに、フォームはダブルバッファリングされています。

編集:フォームにFormBorderStyle. にFormBorderStyle設定するとSizable、この問題は発生しません。FormBorderStyle.Noneただし、境界線のスタイルが必要なので、まだ解決策が見つからないことに注意してください。

4

1 に答える 1

1

これをダイアログ ボックス フォームに追加してみてください。

    protected override CreateParams CreateParams
    {
        get
        {
            // Activate double buffering at the form level.  All child controls will be double buffered as well.

            CreateParams cp = base.CreateParams;

            cp.ExStyle |= 0x02000000;   // WS_EX_COMPOSITED

            return cp;
        }
    }
于 2013-06-14T16:12:43.897 に答える