나는 컨테이너 컨트롤의 너비와 높이의 일부분 인 너비와 높이를줌으로써 동적으로 생성 된 컨트롤의 간격을 고르게하려고한다.왜 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);
}
DockStyle.Fill을 사용하는 경우 명시적인 크기를 설정하는 이유는 무엇입니까? – syneptody