2012-05-03 4 views
0

私は、コンテナコントロールの幅と高さの一部である幅と高さを与えることで、動的に作成されたコントロールを均等に配置しようとしています。私のTextBox.Width値が私が割り当てようとしている値を受け入れないのはなぜですか?

しかし、次元を計算する関数は正しいものの、何らかの理由でWidthプロパティへの代入が拒否されています。 WidthToUse()関数は19を返していますが、動的に作成されたTextBoxにその値を代入しようとすると、... 630!なぜ630で始まるのですか、それはなぜ割り当てられないのですか?

「作業中」はうまくいきませんが、この数式を使用してコントロールをすべて収容するには、コントロールが多すぎるか、パネルに十分なスペースがありません。あなたは私の推測だろうFillからDockプロパティセットを持っているので

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); 
} 
+0

DockStyle.Fillを使用している場合、明示的なサイズを設定するのはなぜですか? – syneptody

答えて

3

DockStyle.Fillは、コンテナのサイズに対するコントロールのサイズを表すプロパティです。コントロールは、このプロパティセットを持つ親コンテナのすべての空き領域に合わせてサイズが変更されます。

+0

OK、それは本当でした。問題は次のとおりです。「セル」内のすべてのスペースを取るためにTextBoxを取得するにはどうすればいいですか?トップに執着します。 –

+0

OK、取得しました。私は部分を一緒に踊らせるために正確な正しい組み合わせに当たるまで、いくつかの弦を引き上げ、いくつかの弦を引っ張り上げて、マリオネットのように感じます。奇妙な/欲求不満なのは、コントロールの高さをコンテナの高さと行数で割った値をコンテナの幅とカラム数で割った値を設定しないことです。 –

+0

12の行があるときに高さの除数を14に設定しなければなりませんでした。私はパッディングや他のいくつかの "フラッフ"がこのオフセットを引き起こしていると思います。 –

2

は、ここに私のコードです。

関連する問題