2014-02-08 68 views
0

我想动态添加TableLayoutPanel。另外,我想动态设置列的宽度。以下是我为了获得所需结果而编写的代码。但它不工作的财产。我附上了这段代码输出的图像。请帮助...这仅仅是一个测试代码,我想学习动态创建控件,positin他们,他们的造型等等ColumnStyle不工作属性

private void ShowAllRecords() { 
    TableLayoutPanel[] tab = new TableLayoutPanel[MaxRows]; 
    for (int rNumber = 0; rNumber < 1; rNumber++) 
    { 
     tab[rNumber] = new TableLayoutPanel(); 
     tab[rNumber].ColumnStyles.Clear(); 
     tab[rNumber].RowCount = 1; 
     tab[rNumber].ColumnCount = 2; 
     tab[rNumber].CellBorderStyle = TableLayoutPanelCellBorderStyle.Inset; 
     tab[rNumber].Location = new Point(0, (rNumber * 50) + 100); 
     tab[rNumber].Width = 200; 
     TableLayoutColumnStyleCollection styles = tab[rNumber].ColumnStyles; 
     tab[rNumber].ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 10)); 

     panel1.Controls.Add(tab[rNumber]); 
     tab[rNumber].BringToFront(); 
    } 
} 

输出: a busy cat

回答

0

我注意到了一个错误for循环:你总是迭代一次而不是MaxRows次。替换此:

for (int rNumber = 0; rNumber < 1; rNumber++) 

与此:

for (int rNumber = 0; rNumber < MaxRows; rNumber++) 

现在,将创建的TableLayoutPanel的与第一固定宽度列的期望数量,一个堆叠在另一个之下和部分重叠。您应该也可以设置Height,但很难猜测您想要达到的目标。