czwartek, 28 sierpnia 2008

TreeView i checkbox

Ostatnio implementowalem obsluge drzewa z checkboxami. Defultowo jest taka kontrolka we Frameworku 2.0 zwana TreeView w której jeden z propertiesów nazywa się CheckBox. Niby wszystko fajnie ale co w przypadku gdy chcemy mieć funkcjonalność którą często można spotkać w różnych instalatorach, chodzi mi o noda checkboxem który robi się szary jeśli jeden z jego dzieci zostanie zaznaczony ale nie wszystkie:)






















No więc okazuje się że Checkboź zaimplementowany w TreeView wcale nie jest checkBoxem jaki znamy - a dostęp do niego jest mocno ograniczony. Dokładnie jest to rysunek a nie kontrolka którą dla każdego noda przechowuje TreeView. Żeby sobie z tym poradzić należy przedziedziczyć TreeView i odpowiednio zmodyfikować: do imagelisty TreeView zapakować trzy bitmapy z zaznaczonym checkboxem, czystym i szarym zaznaczonym. Trzeba jeszcze przechwycic eventy klikniecia myszką i odpowiednio zmodyfikować eventy TreeView. Do wad tego rozwiązania należy zaliczyć że ImageListe mamy już zajętą i nie dodamy nowych icon obok nodów.

Implementacji tego podejścia jest kilka na codeprojectcie:

Brak komentarzy: