2013-03-17 14 views
5

Niektóre kontekstuporządkowana lista kontroli użytkownika (dodawanie i usuwanie)

tworzę aplikację, która pozwala użytkownikom tworzyć podstawowe zasady regały, pragnę stworzyć interfejs, który reprezentuje regały bloki (jeden zestaw półek) obok siebie w kolejności (od lewej do prawej) i pozwala użytkownikom edytować ich dane. Każdy blok będzie zawierał szereg szczegółów, takich jak jego kolejność, nazwa, szerokość, wysokość i liczba półek.

Wymagania

Chcę interfejs mieć poziomą listę przewijania (max 20) kontroli użytkowników. Każda kontrolka użytkownika będzie reprezentować szczegóły bloku, z podstawowym formularzem dla tych szczegółów do edycji.

Użytkownik powinien mieć możliwość naciśnięcia przycisku w kontrolerze użytkownika, który usuwa go i zmienia kolejność pozostałych bloków, a także dodaje bloki na końcu listy.

Moje pytanie

Jak mogę utrzymać uporządkowaną listę tych kontroli „półka blok” użytkownik i mają postać obsługiwać naciśnięcia przycisku kasowania w żadnej z kontroli, który powoduje, że zostaną usunięte i listę, która ma zostać zmieniona? Każda pomoc byłaby świetna.

Zrzut

jestem dopiero zaczynają programować interfejsu, więc mogę jedynie zapewnić szybki makiety tego, co chcę interfejs wyglądać:

enter image description here

tak podstawowego jak mam nadzieję, że da ci to pojęcie o tym, czego szukam.

+0

Zaktualizowany z projektem ekranu. – MarkH

+0

[FlowLayoutPanel] (http://msdn.microsoft.com/en-us/library/system.windows.forms.flowlayoutpanel.aspx), jeśli chcesz ręcznie obsługiwać powiązanie danych. Lub [DataRepeater] (http://msdn.microsoft.com/en-us/library/cc488280.aspx). Nigdy nie używałam 'DataRepeater'a ', ale według MSDN powinien on być dość bogaty w funkcje. – Neolisk

Odpowiedz

0

Możesz użyć urządzenia BindingList do przechowywania bloków. Lista BindingList powiadomi kontrolkę interfejsu użytkownika (na przykład ListBox) o tym, że dane zostały zmienione, na przykład usunięty blok. Interfejs użytkownika odzwierciedli to, usuwając blok z ListBox. Jeśli znasz szyfrowanie danych WPF/Silverlight, jest to podobne do, ale nie do końca takie samo, jak lista ObservableCollection (jeśli celujesz w .NET 4, wierzę, że możesz być w stanie używać ObserverableCollections na WinForm bez większych problemów, ale ktoś inny może być w stanie to wyjaśnić).

Alternatywnie można użyć BindingSource zamiast bezpośrednio przy użyciu BindingList.

+0

Cześć, dzięki za szybką odpowiedź, myślałem, że kontrolowany przez użytkownika panel sterowania pasuje lepiej?Widząc, że nie muszę zajmować się wybranymi kontrolkami itp., Po prostu układam je poziomo. Czy sie zgadzasz? jeśli tak z tego, co przeczytałem, nie sądzę, że lista powiązań działałaby z panelem układu przepływu? – MarkH

+1

Ah, myślę, że trochę się pomyliłem. Zakładam, że chciałeś, aby struktura danych trzymała i utrzymywała skrzynki, które następnie mogą być wyświetlane w interfejsie użytkownika. Możesz użyć FlowLayoutPanel, jeśli chcesz, ale oznaczałoby to bezpośrednią interakcję z interfejsem, gdy chcesz usunąć kontrolę (np. Przez wywołanie FLowLayoutPanel.Controls.Remove()), a nie z bazową strukturą danych. – keyboardP

+0

Tak, okazało się, że sprawiłem, że problem był bardziej skomplikowany, niż powinien. Niezbędny był flowlayout pełen usercontrols, który usunął UC do usunięcia. Dzięki za pomoc – MarkH

0

Co powiesz na umieszczenie ukrytej kontroli siatki w formularzu.
Następnie wystarczy dodać/usunąć wiersze do siatki z żądanymi danymi i wszystko jest utrzymywane bardzo uporządkowane. Jedną z zalet jest to, że dla celów debugowania zawsze można sprawić, że siatka będzie widoczna szybko, aby zobaczyć wszystkie dane.

Powiązane problemy