私の TableLayoutPanel では、12 行 (およびいくつかの列) を動的に追加しています。TableLayoutPanel の Rows コレクションを Autosize に設定すると、12 行目が生成されますが、表示されません。各行が 8.33% になるようにパーセンテージに変更しました (実際には 8 に設定し、自動的に 8.33 に変更されました)。
これは肉眼では完璧なはずですが (99.99999999%)、12 行目に他の行より多くのスペースがあり、16 列目も同じであるため、TableLayoutPanel の下部と右側に「デッド スペース」があり、ラベル最終行にあるのは、隣の列にある textBoxes と整列していません。
誰かが実際のコードに興味がある場合:
private void AddControlsToPlatypusTableLayoutPanel()
{
string lblName;
string txtbxName;
int ColNum = 0;
int RowNum = 0;
int LoopCounter = 1;
DateTime dt = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 0, 0, 0);
while (LoopCounter <= 96) {
// Create the Label
lblName = string.Format("label{0}", LoopCounter);
var lbl = new Label() {
Name = lblName,
Dock = DockStyle.Fill,
Margin = new Padding(),
TextAlign = ContentAlignment.MiddleCenter,
Text = dt.ToString("HH:mm")
};
tableLayoutPanelPlatypus.Controls.Add(lbl, ColNum, RowNum);
// Create the TextBox
txtbxName = string.Format("textBox{0}", LoopCounter);
var txtbx = new TextBox() {
Name = txtbxName, Dock = DockStyle.Fill, Margin = new Padding()
};
tableLayoutPanelPlatypus.Controls.Add(txtbx, ColNum + 1, RowNum);
dt = dt.AddMinutes(15);
RowNum++;
LoopCounter++;
// Move over if at the bottom
if (RowNum == 12) {
ColNum = ColNum + 2;
RowNum = 0;
}
}
}
アップデート
サイズと場所を微調整することで、すべて見栄えを良くすることができますが、今では、周りにクッションを置いて生活するか、フォームと他のすべてのコントロールのサイズ、またはそれらの多くを変更する必要があります. したがって、パーセンテージが期待どおりに機能しなかったのは、まだ少し不規則だと思います。私は知っています、私は知っています:WPF。しかし、それは現在の選択肢ではありません。