繁体   English   中英

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

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

我将所有控件都放在一个面板中。在运行时,我想将控件添加到表格布局面板中。 为此,我编写了以下代码。

 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++;
                 }                    
            }            
    } 

在控件数组中,控件按我的要求存在。 但是上面的代码仅在一列中添加了标签。

谁能告诉我如何将Windows窗体控件动态添加到表布局面板中。

它为我工作。

 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++;
             }                    
        }            
} 

您可以使用此代码执行此操作。

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

您无需定义行数和列数,它们将自动添加。

以组合框为例。 将其替换为控件

暂无
暂无

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

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