0

コンテナコントロールの幅と高さの一部である幅と高さを与えることにより、動的に作成されたコントロールを均等に配置しようとしています。

ただし、寸法を計算する関数は正しいのですが、何らかの理由で Wi​​dth プロパティへの割り当てが頑固に拒否されています。WidthToUse() 関数は 19 を返しますが、その値を動的に作成された 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);
}
4

2 に答える 2

3

DockStyle.Fill は、コンテナーのサイズに対するコントロールのサイズを表すプロパティです。コントロールは、このプロパティが設定された親コンテナーのすべての空きスペースに収まるようにサイズ変更されます。

于 2012-05-03T19:42:08.190 に答える
2

Dockプロパティがに設定されているためFill、私の推測になります。

于 2012-05-03T19:41:48.887 に答える