簡體   English   中英

為什么12 X 8.33似乎等於大約105?

[英]Why does 12 X 8.33 seem to equate to about 105?

在我的TableLayoutPanel中,我正在動態添加十二行(和幾列)。 當我將TableLayoutPanel的Rows集合設置為Autosize時,將生成第12行,但不會顯示。 我將其更改為百分比,每行得到8.33%(實際上我將其設置為8,並自動更改為8.33)。

所以這應該是完美的肉眼(99.99999999%),但現在第十二行比其他行有更多的空間,第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;
        }
    }
}

UPDATE

通過將尺寸和位置調整為smidgin,我可以讓它看起來很好看,但是現在我要么必須在它周圍使用墊子,要么改變窗體的大小和所有其他控件,或者其中許多控件。 因此,我仍然認為百分比不像人們期望的那樣有點不規則。 我知道,我知道:WPF。 但目前這不是一個選擇。

如果你把它設置為8那么8 * 12結束到84%,剩余16%將被容納在最后一行,同樣的情況適用於最后一列。 所以你需要將它定義為100/12 = 8.33%。 如果你將每一行設為8.33%,最后一行設為8.37%,那么這將是不錯的。 你需要在行或列的情況下完成100%。 或者您可以使用修復大小。 如果你想要可變大小的表,那么請確保你沒有定義表的大小和行高度和列寬動態定義表大小。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM