2013-02-22 9 views
5

Mam pole kombi, które muszę mirrorować na stronie innej karcie w aplikacji opartej na WinForm C#.Zmienianie tekstu combobox w innej karcie

Mam doskonale działający kod do wyboru innego elementu z rozwijanej listy. Niestety, gdy zmieniam kartę, która nie została kliknięta, nic się nie dzieje.

Po pierwszym kliknięciu każdej zakładki wszystko działa zgodnie z oczekiwaniami.

Teraz kładę nacisk na jakąś formę braku inicjalizacji. Próbowałem więc wybrać każdą kartę w moim konstruktorze.

tabControlDataSource.SelectedIndex = 0; 
tabControlDataSource.SelectedIndex = 1; 
// etc 

Ale to nie działa.

Próbowałem również dzwonić pod numer tabControlDataSource.SelectTab(1) i nadal nie działa.

Czy ktoś wie, jak mogę wymusić na karcie "inicjowanie"?

+0

I miał kiedyś podobny problem, że rozwiązałem wykonywanie 'tabControl.SelectedTab = tabControl.TabPages [" tabName "]'. Nie widzę jednak, jak to się różni od 'tabControlDataSource.SelectTab (1)'. – Otiel

Odpowiedz

3

Ok, zazwyczaj zamieszczam pytanie po zmaganiu się przez godzinę, a wkrótce potem znajdę rozwiązanie.

Strony kart są leniwie inicjowane. Dlatego nie inicjalizują się całkowicie, dopóki nie są widoczne po raz pierwszy.

tak I dodaje ten kod do mojego konstruktora:

 tabControlDataSource.TabPages[0].Show(); 
     tabControlDataSource.TabPages[1].Show(); 
     tabControlDataSource.TabPages[2].Show(); 

ale to nie działa :(

Przyszło mi jednak, że konstruktor nie może być najlepszym miejscem Tak. I stworzył moduł obsługi zdarzeń dla Shown następująco:

private void MainForm_Shown(object sender, EventArgs e) 
    { 
     tabControlDataSource.TabPages[0].Show(); 
     tabControlDataSource.TabPages[1].Show(); 
     tabControlDataSource.TabPages[2].Show(); 
    } 

a teraz wszystko działa

2

Być może w tym przypadku możesz również użyć jakiejś "leniwej" synchronizacji (inicjalizacji). Szybkie, solidne pomysły: licznik czasu odpytywania w celu aktualizacji zawartości (który zaktualizuje go po wyświetleniu strony karty), brak zależności w drugiej zakładce (brak zmian w wydarzeniach w comboboxie w celu aktualizacji zawartości drugiej karty, użycie oryginalnego combobox z pierwszej karty lub raczej jego zawartość w accessable zarówno klasy comboboxes, etc), „ponownej inicjalizacji”, gdy zakładka widoczne (w którym momencie można również Init swoją drugą combobox) ...

nie może być godzinę, nie ma mowy = D

+1

Tak, to była godzina, jestem dużo bardziej przyzwyczajony do dobrego starego Win32, gdzie nie mam nic oderwanego ode mnie;) – Goz

Powiązane problemy