2011-04-07 119 views
0

我有一个TableLayoutPanel控件最初是空的--0行和0列。我想形成它,并用代码中的一些控件填充它,它有效,但我有一些讨厌的问题 - 当我使用代码向TableLayoutPanel添加控件时,列和行的大小不一样(尽管所有添加的控件都是相同的大小,并停靠填充TableLayoutPanel容器中的单元格)。基本上第一排占据高度的50%,而下两排占25%。TableLayout问题的单元格大小(C#)

码我曾尝试是这样的:

//Reseting table: 
tableLayoutPanel1.RowCount = 1; 
tableLayoutPanel1.ColumnCount = 1; 

//Size of one side of matrix: 
int oneSide=(int)Math.Sqrt(mat.Matrix.Length); 

tableLayoutPanel1.RowCount = oneSide; 
tableLayoutPanel1.ColumnCount = oneSide; 

tableLayoutPanel1.RowStyles.Clear(); 
tableLayoutPanel1.ColumnStyles.Clear(); 
tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.Percent, 100/oneSide)); 
tableLayoutPanel1.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 100/oneSide)); 

//Matrix is an array of controls, mat is some class 
tableLayoutPanel1.Controls.AddRange(mat.Matrix); 

上面的代码是不是做的工作......如何从代码添加somtrols,并且使所有细胞大小一致? P.S.我必须从代​​码中添加控件,在设计时创建行和列是不可能的。

回答

1

做手工,这是不愉快的,让一个代码生成器为你做的工作。创建一个虚拟表单,在其上放置一个TLP。按照您希望的方式与设计师合作。

接下来,找到在解决方案浏览窗口的形式并打开节点到它的左侧。双击Designer.cs文件。找到InitializeComponent方法中的代码并复制/粘贴它。

+0

TNX很多!我只是按照你的指示,发现设计师非常不寻常的东西:行“RowStyles.Add”必须重复所有行!只有一个“RowStyles.Add”不会为所有行添加样式,仅适用于一个! :)))) – guest86 2011-04-07 21:48:25