2013-05-15 14 views
9

Wiem, że jest UserControl.Load, który występuje, zanim kontrola stanie się widoczna po raz pierwszy. I wiem, że istnieje UserControl.HandleCreated, który występuje, gdy uchwyt jest tworzony dla formantu.Jakie zdarzenie występuje natychmiast po wyświetleniu kontrolki po raz pierwszy?

Ale szukam, jakie zdarzenie ma miejsce, gdy kontrola jest pokazywana po raz pierwszy.

Powód:

mam do czynienia z DataGridView który ma kilka danych wprowadzonych do niego zanim pokazana jest kontrola. Nie mogę pokolorować wierszy (BackColor) bez malowania kontrolki (polecenia po prostu nie działają). Polecenia do kolorowania rzędów działają tylko wtedy, gdy element sterujący został pomalowany po raz pierwszy. Muszę więc uchwycić to zdarzenie i pokolorować wiersze w tym miejscu.

dataGridView1.Rows[index].DefaultCellStyle.BackColor = Color.Red; 

Powyższa linia działa, gdy sterowanie jest pokazane, ale nie działa, gdy sterowanie nie jest pokazane.

+0

Czy próbowałeś wydarzenie 'RowPrePaint' lub' RowPostPaint'? – MikeB

+0

Nie jestem pewien, ale chciałbym polecić http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.databindingcomplete.aspx zdarzenie DataBindingComplete. Ponieważ obsługuje również zmiany rozmiaru zdarzeń w zależności od zawartości, powinno to (imho) pracować na twoim obrazie, jak również – Najzero

+1

Dlaczego nie możesz przesłonić 'OnPaint'? – mattytommo

Odpowiedz

7

Możesz użyć zdarzenia VisibleChanged.

private void UserControl_VisibleChanged(object sender, EventArgs e) 
{ 
    if (this.Visible) { ... } 
    else { ... } 
} 
Powiązane problemy