2009-08-29 10 views
19

Quando aggiungiamo un'interfaccia utente o un contenitore in WinForms, il componente aggiunto successivo viene fornito con i componenti aggiunti in precedenza, possiamo dire che si trova in un livello superiore.Ordine layer componenti WinForm UI

Come modificare l'ordine di un livello o l'ordine di un componente dopo l'aggiunta di componenti?

risposta

27

È quando si caricano dinamicamente le componenti nel codice o nella finestra di progettazione? Se è presente nella finestra di progettazione, è possibile utilizzare il formato Formato -> Ordine -> Invia a e Formato -> Ordine -> Porta in primo piano i comandi. Send to Back e Porta in primo piano sono disponibili anche nel menu di scelta rapida quando si fa clic con il pulsante destro del mouse su un controllo, nonché nella barra degli strumenti "Layout" che dovrebbe apparire automaticamente quando si lavora nella finestra di progettazione form.

4

Hai provato a giocare con lo Z-Order?

Vedere anche: Control.SentToBack metodo - La maggior parte dei controlli Winform dovrebbe quindi supportare questo.

30

Quando si posiziona più di un controllo nello stesso posto, uno finirà in cima e l'altro finirà sotto. Di solito questo è il risultato di un errore minore, come l'uso scorretto delle funzioni di ancoraggio e di ancoraggio per creare una forma ridimensionabile. In alcuni casi, tuttavia, potresti voler sovrapporre il controllo per un effetto specifico.

Quando il controllo di sovrapposizione, è l'indice z che determina quale controllare finisce sul top.Essentially, ogni existy controllo nella propria distinta controllo layer.A numerata che ha lo strato indice z 1 verrà visualizzato sopra un controllo in z-index layer 2 se si sovrappongono. Di solito, l'indice z di un gruppo di controlli è determinato dall'ordine in cui si aggiungono i controlli, in modo che l'ultimo controllo che si aggiunge sia sempre nel livello più in alto (con una z- indice di 0).

Tuttavia, è possibile modificare queste opzioni.

Per determinare o impostare l'indice z di un controllo, è possibile utilizzare i metodi GetChildIndex() e SetChildIndex() della raccolta Controls. Ecco un esempio che sposta un controllo sul terzo livello nello z-index.

Controls.SetChildIndex(ctrl, 2); 

Di solito, non avrete bisogno di questo tipo di ritrovamento a grana control.Instead, si vorrà solo far cadere un controllo per la parte posteriore della z-index (il livello più in basso) o portare in alto. È possibile eseguire questa funzione in fase di progettazione facendo clic con il pulsante destro del mouse su un controllo e scegliendo Porta a Fron o Porta in secondo piano. È anche possibile eseguire la stessa operazione a livello di programmazione utilizzando i metodi Control.BringToFront() o Control.SendToBack().

ctrl.BringToFront(); // This is equivalent to Controls.SetChildIndex(ctrl,0); 
+0

L'ho trovato utile. Ho trovato anche GetChildIndex per capire in fase di esecuzione quale controllo è in primo piano. Grazie. –

11

Nella vista di progettazione, è anche possibile aprire il pannello "Struttura documento" per visualizzare una struttura ad albero del modulo/controllo corrente, quindi trascinare i componenti intorno, "su" e "giù" per portarli in primo piano e indietro, e anche dentro e fuori dai contenitori.

+1

Visualizza> OtherWindows> DocumentOutline o utilizzando la scorciatoia Ctrl + W, U –