Mam formularz, który wychowuję za pomocą ShowDialog
, który zawiera kilka pól tekstowych, etykiet i przycisku. Problem polega na tym, że pola tekstowe są rysowane przed samym formularzem, a pozostałe formanty są rysowane.Kontrolki nie są rysowane w tym samym czasie
Jestem przesłanianie metody OnPaint
Nie jestem pewien, czy to może być przyczyną problemu:
protected override void OnPaint(PaintEventArgs e)
{
ControlPaint.DrawBorder(e.Graphics, e.ClipRectangle, Color.Black, ButtonBorderStyle.Solid);
base.OnPaint(e);
}
to tylko niewielkie opóźnienie, ale jest to widoczne i denerwujące. Dziękuję Ci.
Formularz jest podwójnie buforowany przy okazji.
EDYTOWANIE: Zidentyfikowaliśmy problem jako fakt, że formularz nie ma numeru FormBorderStyle
. W przypadku zestawu FormBorderStyle
ustawionego na Sizable
ten problem nie występuje. Należy jednak pamiętać, że posiadanie FormBorderStyle.None
jako mojego stylu granicznego jest konieczne, więc nie znalazłem jeszcze rozwiązania.
można dodawać wszystkie istotne kodu odnoszące się do rysunku z etykiety, pola tekstowe i przyciski? – JosephGarrone
W rzeczywistości element nadrzędny wywołuje metodę renderowania każdego elementu podrzędnego przed wykonaniem samego renderowania. To jest domyślne zachowanie. Może być wyświetlane okno dialogowe po zakończeniu ładowania formularza. – Saravanan
Wszystkie elementy sterujące zostały dodane za pomocą projektanta Visual Studio, więc nie dotknąłem rysunku tych elementów sterujących. –