2013-05-05 16 views
5

Birkaç metin kutusu, etiket ve bir düğme içeren ShowDialog kullanarak getirdiğim bir formum var. Sorun şu ki, metin kutuları formun kendisinden önce çekiliyor ve diğer kontroller çiziliyor.Kontroller aynı anda çizilmiyor

bu soruna neden olabilir emin değilim OnPaint yöntemi geçersiz kılmasını ediyorum:

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

Sadece bir gecikme var ama görünür ve sinir bozucu. Teşekkür ederim.

Form, bu arada çift tamponlu.

EDIT: Sorunun, formun FormBorderStyle olmadığı gerçeğini belirttim. FormBorderStyleSizable olarak ayarlandığında, bu sorun oluşmaz. Ancak, kenarlık stilim olarak FormBorderStyle.None olması gerektiğine dikkat edin, bu yüzden henüz bir çözüm bulamadım. iletişim kutusu forma bu ekleme

+1

ilgili tüm kod Etiketler, metin kutularının ve Düğmeler çizimi ile ilgili gönderebilir miyim? – JosephGarrone

+0

Aslında, ana öğe, kendisini oluşturmadan önce her bir alt denetimin işlem yöntemini çağırır. Bu varsayılan davranıştır. Form yükü tamamlandıktan sonra iletişim kutusunu gösterebilirsiniz. – Saravanan

+0

Tüm denetimler Visual Studio tasarımcısı tarafından eklenmiştir, bu nedenle bu denetimlerin çizimine dokunmadım. –

cevap

1

Dene:

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; 
     } 
    } 
+0

Bu çalıştı! –