为什么我的TextBox.Width值不接受我试图赋值的值?

时间:2012-05-03 19:38:42

标签: c# winforms dynamic tablelayoutpanel

我试图通过为它们提供一个宽度和高度,它是容器控件的宽度和高度的一小部分来均匀地分隔动态创建的控件。

然而,虽然我计算尺寸的函数是正确的,但由于某种原因,对Width属性的赋值被顽固地拒绝了。 WidthToUse()函数返回19,但是当尝试将该vaue分配给动态创建的TextBox时,它仍然保留在... 630!为什么630开始,为什么拒绝分配?

即使是高度,虽然“工作”不能正常工作 - 面板上有太多的控件或空间不足以容纳使用此数学运算的所有控件。

这是我的代码:

int WidthToUse = getTextBoxWidthToUse(tableLayoutPanelGreatGooglyMoogly.Width);
int HeightToUse = getControlHeightToUse(tableLayoutPanelGreatGooglyMoogly.Height);

TextBox txtbx = new TextBox();
txtbx.Parent = tableLayoutPanelGreatGooglyMoogly;
txtbx.Margin = new Padding();
txtbx.Dock = DockStyle.Fill;
txtbx.AutoSize = false;
txtbx.Width = WidthToUse;   // WidthToUse is 19, but txtbx.Width is 630 both before AND after this assignment!
txtbx.Height = HeightToUse; // HeightToUse is 27


private static int getControlHeightToUse(int theDynPanelHeight) {
    return (theDynPanelHeight / NUMBER_OF_ROWS);
}

private static int getTextBoxWidthToUse(int theDynPanelWidth) {
    return (theDynPanelWidth / 32);
}

private static int getLabelWidthToUse(int theDynPanelWidth) {
    return ((theDynPanelWidth / 64) * 3);
}

2 个答案:

答案 0 :(得分:3)

DockStyle.Fill是一个属性,用于描述控件相对于其容器大小的大小。控件将调整大小以适应设置此属性的父容器中的所有空白区域。

答案 1 :(得分:2)

因为Dock属性设置为Fill,所以我会猜测。