2011-06-24 15 views
8

Quindi, mi è stato chiesto di ridisegnare una vecchia applicazione che ho scritto alcuni anni fa.Layout di dock, ancoraggio e fluido nelle applicazioni Windows Form

Fondamentalmente, non è necessario modificare molto, tranne che il Cliente desidera che sia più fluido e che debba essere a schermo intero (nessuna "finestra" visibile) I.e. senza barra del titolo, solo una finestra a schermo intero senza bordi.

Qual è il modo migliore per assicurarsi che tutto rimanga fluido, voglio dire come possiamo assicurarci che tutto appaia dove dovrebbe, perché sai, risoluzioni diverse, dimensioni del monitor, ecc.?

Questo è facile nelle pagine web/css, ma questo non è qualcosa che ho fatto prima. La maggior parte dei controlli verrà creata a livello di programmazione in fase di esecuzione, in base all'azione eseguita, ecc. Come potrei realizzare tale layout? Fondamentalmente voglio essere in grado di posizionarlo a schermo intero, senza sapere quanto è grande il loro monitor, o quale risoluzione stanno usando.

+1

È solo questione di ancorare tutto nel modo giusto? – bendr

+0

Penso che dovresti essere più specifico, varie domande relative al layout sono state fatte molte volte su SO e penso che saresti in grado di trovare soluzioni ai tuoi problemi se li infrangeresti in quelli più piccoli. – Snowbear

+0

Beh, penso che il mio commento abbia avuto un suggerimento su cosa dovrei fare ... Non sono sicuro di come abbatterlo più di quanto io (penso) abbia. Ma grazie @Snowbear - continuerò a cercare. L'ancoraggio – bendr

risposta

17

Il tuo sicuramente corretto nel tentativo di progettare il modulo utilizzando un layout fluido che risponde alle dimensioni dello spazio disponibile e la dimensione del carattere del modulo. Per farlo, si desidera utilizzare i seguenti controlli e proprietà di controllo.

1, TableLayoutPanel dividerà un'area in un insieme di righe e colonne e consentirà di posizionare i controlli figlio all'interno di singole celle del layout di tale tabella. Questo risponde a un cambiamento nella larghezza e altezza del modulo.

2, FlowLayoutPanel posiziona i comandi del bambino da sinistra a destra e si sposta automaticamente su una nuova riga quando si esaurisce lo spazio. Questo è ottimo per un design fluido in quanto regolerà il layout a seconda dello spazio disponibile.

3, La proprietà Control.Anchor consente a un controllo figlio di modificare la posizione e le dimensioni in base alle dimensioni dell'area del modulo client. In questo modo, il tuo controllo sarà sempre un offset fisso dai bordi destro o inferiore.

4, ControlDock proprietà posizionerà un controllo figlio contro un bordo e la dimensione opposta verrà automaticamente definita dal modulo contenente.

+0

Grazie a @Phil, ha funzionato come un fascino. :) – bendr

+1

Il trucco è come combinare abilmente le funzionalità e utilizzare il nesting con i pannelli. Ad esempio, utilizzare un pannello che si collega a sinistra e un altro che si blocca come "Completo". Questo ha l'effetto che la parte sinistra non si allargherà ma quella giusta. Questa è una soluzione ingegnosa per una forma complicata con molti controlli in un layout fisso a sinistra e diverse griglie coltivabili o riquadri di anteprima a destra. – nalply

3

È possibile inserire i controlli in tableLayout e impostare la proprietà Dock da riempire.

Problemi correlati