2013-03-17 9 views
5

Alcuni contestoelenco ordinato di controlli utente (con l'aggiunta e la soppressione)

Sto creando un'applicazione che consente agli utenti di eseguire regolazioni di base della scaffalatura, desidero creare un'interfaccia che rappresenta blocchi di scaffalature (una serie di scaffali) uno accanto all'altro in ordine (da sinistra a destra) e consente agli utenti di modificare i propri dettagli. Ogni blocco avrà una serie di dettagli come il suo ordine, un nome, una larghezza, un'altezza e un numero di ripiani.

Requisiti

voglio l'interfaccia di avere un elenco a scorrimento orizzontale (max 20) controlli utente. Ogni controllo utente rappresenterà i dettagli di un blocco, con un modulo di base per la modifica di questi dettagli.

L'utente deve essere in grado di premere un pulsante nel controllo utente che lo elimina e riordinare gli altri blocchi e aggiungere anche blocchi alla fine dell'elenco.

La mia domanda

Come faccio a mantenere un elenco ordinato di questi controlli 'blocco shelf' utente, e hanno gestire la forma la pressione del pulsante di eliminazione in nessuno dei controlli che fa essere cancellato e la lista da riordinare? Qualsiasi aiuto sarebbe grande.

Schermata

Sto solo cominciando a programmare l'interfaccia in modo da poter fornire solo una rapida mock up di ciò che voglio l'interfaccia per assomigliare:

enter image description here

come base, come spero che ti dia un'idea di quello che sto cercando.

+0

Aggiornato con un design dello schermo. – MarkH

+0

[FlowLayoutPanel] (http://msdn.microsoft.com/en-us/library/system.windows.forms.flowlayoutpanel.aspx), se si desidera gestire l'associazione dei dati manualmente. Oppure [DataRepeater] (http://msdn.microsoft.com/en-us/library/cc488280.aspx). Non ho mai usato 'DataRepeater' da solo, ma dovrebbe essere abbastanza ricco di funzionalità, secondo MSDN. – Neolisk

risposta

0

È possibile utilizzare uno BindingList per memorizzare i blocchi. Un BindingList notificherà al controllo dell'interfaccia utente (ad esempio un ListBox) che i dati sono stati modificati, ad esempio un blocco eliminato. L'interfaccia utente rifletterà quindi rimuovendo il blocco dal ListBox. Se hai familiarità con l'associazione dati WPF/Silverlight questo è simile a, ma non proprio uguale a, un elenco ObservableCollection (se stai mirando a .NET 4, credo che potresti essere in grado di utilizzare ObserverableCollections in un WinForm senza troppi problemi ma qualcuno altrimenti potrebbe essere in grado di chiarirlo).

In alternativa, è possibile utilizzare uno BindingSource anziché utilizzare direttamente un BindingList.

+0

Ciao, per la tua rapida risposta, stavo pensando che un pannello di visualizzazione dei flussi adatto agli utenti controlli di più?Visto che non ho bisogno di gestire questi controlli che vengono selezionati ecc., Appena disposti orizzontalmente. Sei d'accordo? se è così da quello che ho letto, non penso che una lista vincolante possa funzionare con un pannello di layout del flusso? – MarkH

+1

Ah, penso di averlo un po 'confuso. Immaginavo che volessi una struttura dati per contenere e mantenere le scatole che possono poi essere visualizzate sull'interfaccia utente. È possibile utilizzare un FlowLayoutPanel se lo si desidera, ma significherebbe interagire direttamente con l'interfaccia utente ogni volta che si desidera rimuovere un controllo (ad esempio chiamando FLowLayoutPanel.Controls.Remove()) e non con una struttura dati sottostante. – keyboardP

+0

Sì, ho scoperto che stavo rendendo il problema più complicato del necessario. Tutto ciò che serviva era un flusso completo di controllo degli utenti, rimuovendo l'UC da eliminare. Grazie per l'aiuto – MarkH

0

Che ne dici di mettere un controllo griglia nascosto sul modulo.
Quindi basta aggiungere/rimuovere righe sulla griglia con i dati desiderati e tutto è tenuto molto ordinato. Un vantaggio qui è che per scopi di debug è sempre possibile rendere visibile la griglia per vedere tutti i dati in modo rapido .

Problemi correlati