2017-09-18 5 views
1

Ich arbeite an einem Steuerelement, das eine TableLayoutPanel enthält. Die Anzeige enthält X Zeilen und Y Spalten - wobei jede Zelle die gleiche Größe hat. Jede Zelle enthält eine Control Wenn die Größe der übergeordneten Steuerelemente geändert wird, möchte ich auch jede Zelle die Größe ändern und die gleiche Größe beibehalten.TableLayoutPanel - Ändern der Größe jeder Zelle beim Ändern der Größe des übergeordneten Steuerelements

Ich habe versucht, die Controls'Anchor, wenn in der Zelle gegeben einzustellen:

control.Anchor = AnchorStyles.Left | AnchorStyles.Top | 
       AnchorStyles.Right | AnchorStyles.Bottom; 

Aber das macht nur die untere Reihe und die am weitesten rechts stehende Spalte erweitern.

Antwort

2

Mithilfe von Designer oder Code können Sie SizeType der Spalten und Zeilen auf Percent setzen und denselben prozentualen Wert für ihre Größe zuweisen. Setzen Sie außerdem Dock Eigenschaft Ihrer Steuerelemente auf Fill.

Zum Beispiel:

tableLayoutPanel1.ColumnStyles.Clear(); 
tableLayoutPanel1.RowStyles.Clear(); 
for (var i = 0; i < tableLayoutPanel1.ColumnCount; i++) 
{ 
    var percent = 100f/(float)tableLayoutPanel1.ColumnCount; 
    tableLayoutPanel1.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, percent)); 
} 
for (var i = 0; i < tableLayoutPanel1.RowCount; i++) 
{ 
    var percent = 100f/(float)tableLayoutPanel1.RowCount; 
    tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.Percent, percent)); 
} 
+0

Dank! das war eine große Hilfe. Aber da ist etwas Seltsames los: Die letzte Zeile und die letzte Spalte ist nur ein kleines bisschen größer als die anderen Zeilen/Spalten? Wenn ich SizeType auf Absolute einstelle, haben sie die gleiche Größe, werden aber nicht skaliert. – Moelbeck

+0

Gern geschehen. Sehen Sie sich ein Beispiel [hier] an (https://stackoverflow.com/a/33969228/3110834). Ich konnte das Problem, das Sie in Kommentaren erwähnt haben, nicht reproduzieren. –

+0

Ein anderes Beispiel [hier] (https://stackoverflow.com/a/34426939/3110834). –

Verwandte Themen