我动态将控件添加到TableLayoutPanel中。
它具有12行和32列。
我分了列的宽度,使那些带有标签的两倍宽,那些文本框,并且其百分比加起来为100:
labels = 5%
textBoxes = 2.5%
由于每行有24个文本框和每行8个标签,这等于100%(40%的标签,60%文本框)。
然而,最后一列是斯帕斯霍格,因为在这里可以看到:
http://warbler.posterous.com/the-32-column-is-wider-than-the-rest
我需要的标签,以显示他们的整个自我是空间:他们真的是五个字符宽(“00:00” ......“23:45”)不是四个,如显示。
基于经验证据(以前的试验和错误的),我可以减少TLP的宽度瘦了那最后一列,但这并没有解决我的标签细胞太骨感的问题。
这就是我如何拍打控制的TLP(我已经设置在设计时列宽的百分比,通过属性页列集合)
private void AddPlatypusScheduleControlsToTableLayoutPanel()
{
try
{
this.SuspendLayout();
tableLayoutPanelPlatypusSchedule.ColumnCount = PLATYPUS_SCHEDULE_COL_COUNT;
int ColNum = 0;
int RowNum = 0;
int LoopCounter = 1;
var dt = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 0, 0, 0);
while (LoopCounter <= QUARTER_HOUR_COUNT)
{
string lblName = string.Format("labelPS{0}", LoopCounter);
var lbl = new Label
{
Name = lblName,
Dock = DockStyle.Fill,
Margin = new Padding(),
Font = new Font("Microsoft Sans Serif", 7),
TextAlign = ContentAlignment.MiddleCenter,
Text = dt.ToString("HH:mm")
};
tableLayoutPanelPlatypusSchedule.Controls.Add(lbl, ColNum, RowNum);
string txtbxName1 = string.Format("textBoxLSA{0}", LoopCounter);
var txtbxa = new TextBox { Name = txtbxName1, Dock = DockStyle.Fill, Margin = new Padding() };
string txtbxName2 = string.Format("textBoxLSB{0}", LoopCounter);
var txtbxb = new TextBox { Name = txtbxName2, Dock = DockStyle.Fill, Margin = new Padding() };
string txtbxName3 = string.Format("textBoxLSC{0}", LoopCounter);
var txtbxc = new TextBox { Name = txtbxName3, Dock = DockStyle.Fill, Margin = new Padding() };
tableLayoutPanelPlatypusSchedule.Controls.Add(txtbxa, ColNum + 1, RowNum);
tableLayoutPanelPlatypusSchedule.Controls.Add(txtbxb, ColNum + 2, RowNum);
tableLayoutPanelPlatypusSchedule.Controls.Add(txtbxc, ColNum + 3, RowNum);
dt = dt.AddMinutes(15);
RowNum++;
LoopCounter++;
if (RowNum == 12)
{
ColNum = ColNum + 4;
RowNum = 0;
}
}
}
finally {
this.ResumeLayout();
}
}
UPDATE
我想也许问题是TLP的宽度是不完全整除32(它是619); 所以我把它扩大到了640,但同样的问题依然存在。
更新2
为了得到它的工作,我不得不使用绝对尺寸列,而不是百分比*,并增加标签保持柱的宽度35(其中在640 TLP宽度只剩15对TextBox,保持柱) 。
- WPF有时可以是(更像是一个比科迪亚克小熊)熊,但它肯定充满法案这样的情况,在这里我担心绝对大小都去达拉斯不同分辨率/屏幕尺寸等