2009-11-03 18 views
5

Używam formantu TreeView TreeView w moim programie. Chciałbym pozwolić użytkownikowi wybrać wiele węzłów na tym samym poziomie, przeciągając wskaźnik myszy dookoła (zwany także wyborem "lasso"). Nie sądzę, żeby standardowy TreeView na to pozwalał.Wielokrotny wybór w TreeView

Moje pytanie brzmi, jaki byłby najlepszy sposób, aby to osiągnąć? Czy muszę napisać własne zachowanie wyboru w być może niestandardowym lub pochodnym sterowaniu? Gdzie zaczynam?

Nie potrzebuję szczegółowych wyjaśnień. Wystarczy mały szturch w dobrym kierunku.

Odpowiedz

6

To nie będzie łatwe do zrobienia ze standardową kontrolką WinForms TreeView. Sterowanie TreeView obsługuje tylko jeden wybór na drzewo. Nie jest możliwe jednoczesne wybieranie wielu węzłów w drzewie.

Aby uzyskać takie zachowanie, prawdopodobnie trzeba stworzyć bardzo podobną klasę do TreeView, co umożliwiło wielokrotny wybór. Inną opcją jest wyprowadzenie z TreeView i umożliwienie wielokrotnego wyboru poprzez przesłonięcie określonych zachowań. Oto artykuł o tym, jak to zrobić.

+0

Rozumiem niestandardowe podejście kontrolne w celu uzyskania wielokrotnego wyboru. W jakim kierunku, sugerowałbyś, powinienem wziąć w celu wprowadzenia wyboru "lasso"? Czy muszę odwoływać się do niestandardowego rysunku na poziomie GDI, czy jest tam interfejs API lub coś, co Windows udostępnia w tym celu, co może ułatwić mi pracę? –

+0

@Frederick, nie jestem świetnym komentarzem na ten temat. Moją sugestią byłoby otwarcie oddzielnego nowego pytania skupiającego się wyłącznie na sposobie implementacji selekcji lasso na ogólnym sterowaniu WinForm. To prawdopodobnie przyniesie lepsze wyniki. – JaredPar

+0

Dzięki Jared. Po prostu to zrobię. –

0

rozważyć wdrożenie wielokrotnego wyboru w kontroli, który obsługuje wiele wybór jak ListView. Jeśli będziesz przestrzegać norm, które większość użytkowników systemu Windows zrozumie, otrzymasz rozwiązanie łatwiejsze do wdrożenia i łatwiejsze w użyciu.

Jeśli naprawdę potrzebujesz czegoś bardziej wyszukanego, być może warto rozważyć opracowanie niestandardowego sterowania.