4

私の 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。しかし、それは現在の選択肢ではありません。

4

1 に答える 1

1

8 に設定した場合、8*12 は 84% になり、残りの 16% は最後の行に収容され、最後の列にも同じケースが適用されます。したがって、100/12 = 8.33% と定義する必要があります。各行を 8.33% で作成し、最後の行を 8.37% で作成すると、見栄えがよくなります。行でも列でも、100% 完了する必要があります。または、代わりに固定サイズを使用できます。テーブルの可変サイズが必要な場合は、テーブルのサイズを定義せず、行の高さと列の幅がテーブルのサイズを動的に定義するようにしてください。

于 2012-09-05T18:17:55.727 に答える