简体   繁体   English

如何从面板动态地向表格布局面板添加控件

[英]how to add controls dynamically to table layout panel from panel

I have placed all the controls in one panel.During the run time i would like to add the control to table layout panel. 我将所有控件都放在一个面板中。在运行时,我想将控件添加到表格布局面板中。 To do that i have written following code. 为此,我编写了以下代码。

 void arrangeTableLayout()
    {
        int rowcount = 1;           
            tblPanel.ColumnCount=2;           
            tblPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
            tblPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
            for (int i = 0; i < panel.Controls.Count; i++)
            {
                if (panel.Controls[i].Visible)
                {

                  tblPanel.Controls.Add(panel.Controls[i], 0, rowcount);
                  tblPanel.Controls.Add(panel.Controls[i + 1], 1, rowcount);
                  tblPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 40F));                            
                   i++;                           
                   rowcount++;
                 }                    
            }            
    } 

in the control array the controls are there as required to me. 在控件数组中,控件按我的要求存在。 But the above code adding only labels in one column. 但是上面的代码仅在一列中添加了标签。

Can any one tell me how to add the windows form controls dynamically to the table layout panel. 谁能告诉我如何将Windows窗体控件动态添加到表布局面板中。

Its worked for me. 它为我工作。

 void arrangeTableLayout()
 {
    int rowcount = 1;           
        tblPanel.ColumnCount=2;           
        tblPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
        tblPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
        for (int i = 0; i < panel.Controls.Count; i++)
        {
            if (panel.Controls[i].Visible)
            {
             var c1 = panel.Controls[i];
             var c2 = GetNextControl(panel.Controls[i], true);
             panel.Controls.Remove(c1);
             i--;                            
             panel.Controls.Remove(c2);
             tblPanel.Controls.Add(c1, 0, rowcount);
             tblPanel.Controls.Add(c2, 1, rowcount);
             tblPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 40F));                                          
             rowcount++;
             }                    
        }            
} 

You can use this code to do that. 您可以使用此代码执行此操作。

   tblPanel.Controls.Add(new Label() { Text = "Type:", Anchor = AnchorStyles.Left, AutoSize = true }, 0, 0);
   tblPanel.Controls.Add(new ComboBox() { Dock = DockStyle.Fill }, 0, 1);

you don't need to define number of rows and columns, they will be added automatically. 您无需定义行数和列数,它们将自动添加。

Combobox use as a example. 以组合框为例。 Replace it with your controls 将其替换为控件

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM