Mentre trovo l'attuale risposta up-votato del tutto adeguato, sembra anche un po 'di Messier del necessario. È necessario aggiungere i controlli al tableLayoutPanel prima di impostarne le proprietà.
Visual Studio (2013 e probabilmente altre versioni) mostreranno queste proprietà come parte del controllo. Quando in realtà, fanno parte del tableLayoutPanel.
Spiegazione:
tableLayoutPanel.Controls.Add(**control**, x, y)
tableLayoutPanel.SetColumnSpan(**control**, '# of cols to span')
Esempio:
tableLayoutPanel1.Controls.Add(**button1**, 0, 0);
tableLayoutPanel1.SetColumnSpan(**button1**, 2);
tableLayoutPanel1.SetRowSpan(**button1**, 3);
Risultato: un pulsante che 'occupa' questo spazio. (A condizione che sia abbastanza grande da coprire l'area. Anche se non si 'copertura' lo spazio, sarà ancora 'riserva' di esso.)
O O X X X
O O X X X
O O X X X
X X X X X
X X X X X
Impostazione della durata di più grande della dimensione della griglia sarà. .: NON modifica la dimensione della griglia. NON ritagliare/modificare il numero alla dimensione della griglia. NON lanciare un errore durante la compilazione.
Esso agirà/eseguirà come se lo span fosse impostato sulla dimensione massima della griglia corrente (tableLayoutPanel). Ciò è rilevante solo se cambia la dimensione TLP/griglia.
Se si aggiungono due controlli due la stessa posizione della griglia a livello di programmazione, il primo controllo in una griglia mantiene la sua posizione. Qualsiasi controllo aggiunto successivamente viene trasferito al blocco successivo. Se viene aggiunto uno "span", tratterà quel blocco di celle come usato e continuerà a cercare un blocco di celle inutilizzato.
Es: label1, etichetta2 e Label3 vengono aggiunti a 0,0.
- label1 apparirà 0,0
- label2: 0,1
- Label3: 0,2
Es 2: etichetta 1 ha una durata di fila di 2.
- label1: 0,0
- label2: trasferito a 0,2
- Label3: 0,3
Dopo aver selezionato il punto della griglia corretta e campate, è possibile poi ulteriormente ottimizzare il layout utilizzando le proprietà dock e di ancoraggio.
ottimo codice. Visual Studio Designer mi induce in errore. Stavo cercando nelle proprietà button1, stavo cercando di lanciare button1 su toolstippanel item e così via ... grazie! –
se si è cercato in Form.Designer.cs anziché in visual designer, la soluzione è stata trovata direttamente. ;-) – Oliver
So che è un vecchio post, ma vorrei sottolineare che non è necessario eseguire le "condizioni yoda" in C# poiché se le istruzioni sono fortemente digitate. (E credo che se si commette un errore con i booleani e si metta un compito invece di un confronto, si genera un avvertimento del compilatore, a differenza dell'errore che genera con qualsiasi altro tipo.) – MiffTheFox