2011-04-07 120 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