为什么我的 TextBox.Width 值不接受我尝试分配的值

本文关键字:分配 不接受 我的 TextBox Width 为什么 | 更新日期: 2023-09-27 18:33:01

我正在尝试通过为动态创建的控件提供宽度和高度(即容器控件宽度和高度的一小部分)来均匀间隔动态创建的控件。

但是,尽管我的函数计算尺寸是正确的,但由于某种原因,对 Width 属性的赋值被顽固地拒绝了。WidthToUse() 函数返回 19,但是当尝试将该值分配给动态创建的文本框时,它仍保留在...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);
}

为什么我的 TextBox.Width 值不接受我尝试分配的值

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

因为您将Dock属性设置为Fill这是我的猜测。