2011-10-07 7 views
5

Uso panel.controls.add per aggiungere controlli al pannello. Ma ... lo inseriscono in cima.Come inserire i controlli ancorati in alto sotto i controlli ancorati in cima all'anteprima su un pannello

Ho provato i metodi BringToFront e SendToBack, ma non sembra funzionare.

Qualche idea? Grazie

EDIT:

quello che voglio, è che essi attraccano nella parte superiore del contenitore, ma se c'è un altro controllo ancorata lì, quella nuova viene visualizzata sotto quella ...

+1

Il titolo della tua domanda mi confonde un po '. O vuoi che siano ancorati nella parte superiore o nella parte inferiore del controllo contenitore, quale è? Usa la proprietà 'Dock' in entrambi i casi –

+0

Mostraci il tuo codice! – Stormenet

+0

Inserire nella parte superiore di esso significa? Vuoi nuovi controlli in fondo? – Anuraj

risposta

13

L'ordine aggancio si basa sull'indice del controllo nella Controls. L'ultimo va in cima. Questo è il motivo per cui il tuo controllo aggiunto va in primo piano e spinge verso il basso un controllo ancorato esistente. Utilizza il metodo SetChildIndex() per spostare il controllo sull'indice 0:

 var btn = new Button(); 
     btn.Dock = DockStyle.Top; 
     panel1.Controls.Add(btn); 
     panel1.Controls.SetChildIndex(btn, 0); 
+0

Questo è ciò che ha funzionato per me ... grazie hans. .. – saggio09

1

"quello che voglio, è che si agganciano nella parte superiore del contenitore, ma se c'è un altro controllo ancorato lì, il nuovo viene visualizzato sotto quello ..."

OK Capisco. Vedo due soluzioni:

  1. Uso struttura Anchor (insieme a Top) invece di Dock proprietà - quindi questi controlli verranno collocati sul lato superiore all'altro, tuttavia essi non allungare orizzontalmente, non sarà occupano automaticamente tutto lo spazio orizzontale disponibile (puoi comunque controllare il loro Width in modo programmatico). Se questa limitazione è un problema per voi, provate l'opzione 2:

  2. utilizzare un altro controllo contenitore - potrebbe essere un TableLayoutPanel - ancorarla nella parte superiore del primo pannello, e poi mettere i restanti controlli che TableLayoutPanel . Usa la sua collezione Columns per fornire spazio per più controlli uno accanto all'altro. (Incorporare controlli contenitori in altri controlli contenitore non è raro e spesso necessari nella progettazione layout complessi.)

+0

Thx per l'ottimo consiglio! Non riuscivo a capirlo e mettere tutti i 'GroupBoxes' in un grande' TableLayoutPanel' dove potevo facilmente gestire l'ordine, la larghezza e l'altezza. – DarkLite1

+0

@ DarkLite1 nessun problema - wow, questa risposta ha aspettato il suo primo upvote per quasi 5 anni:) –

+0

Meglio tardi poi mai, mi ha risparmiato un sacco di tempo :) – DarkLite1

2

Hai due modi per farlo.

  1. Aggiungere i comandi nell'ordine in cui si desidera che vengano visualizzati in un pannello, agganciare i comandi in basso mentre vengono creati.

    Example: 
    Panel.Controls.Add(Label1) 
    Panel.Controls.Add(Label2) 
    Panel.Controls.Add(Label3) 
    
  2. invertire l'ordine dei controlli viene aggiunto al pannello, bacino i controlli per la parte superiore in fase di creazione.

    Example 
    Panel.Controls.Add(Label3) 
    Panel.Controls.Add(Label2) 
    Panel.Controls.Add(Label1) 
    

Se questo non è quello che si vuole è, si vuole invertire sia l'ordine di ciò che viene aggiunto (che non sembra probabile) o aggancio (fino vs basso).

0

come riorganizzare i pannelli di layout in un form in fase di progettazione:

Aprire il modulo in visualizzazione struttura.Aprire la finestra Struttura documento - Visualizza | Altre finestre | Struttura documento - (Ctrl + Alt + T).

La struttura del documento mostra i pannelli di layout in una vista ad albero nell'ordine inverso rispetto a come sono visualizzati nel modulo. All'interno della finestra Struttura documento è possibile riorganizzare l'ordine dei pannelli. A causa dell'ordine inverso, quello che viene mostrato in alto nella Struttura documento sarà nella parte inferiore del modulo.

Problemi correlati