[英]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;
}
}
}
通過將尺寸和位置調整為smidgin,我可以讓它看起來很好看,但是現在我要么必須在它周圍使用墊子,要么改變窗體的大小和所有其他控件,或者其中許多控件。 因此,我仍然認為百分比不像人們期望的那樣有點不規則。 我知道,我知道:WPF。 但目前這不是一個選擇。
如果你把它設置為8那么8 * 12結束到84%,剩余16%將被容納在最后一行,同樣的情況適用於最后一列。 所以你需要將它定義為100/12 = 8.33%。 如果你將每一行設為8.33%,最后一行設為8.37%,那么這將是不錯的。 你需要在行或列的情況下完成100%。 或者您可以使用修復大小。 如果你想要可變大小的表,那么請確保你沒有定義表的大小和行高度和列寬動態定義表大小。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.