2015-06-08 75 views
0

我已經將所有控件放在一個面板中。在運行時,我想將控件添加到表格佈局面板。要做到這一點,我寫了下面的代碼。如何從面板動態添加控件到表格佈局面板

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

在控件數組中,控件在我需要的地方存在。但上面的代碼只在一列中添加標籤。

任何人都可以告訴我如何動態地將窗體控件添加到表格佈局面板。

+0

您正在將控件從面板移動到tblPanel。哪些修改panel.Controls集合。所以panel.Controls [i + 1]不是你認爲的那樣,它是panel.Controls [i]之後的* second *控件。 –

+0

是的。如果我檢查控制面板的名稱。控件[i + 1]。名稱只適用於我。但它並沒有增加。 – Raghuveera

回答

0

它爲我工作。

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

您可以使用此代碼來做到這一點。

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

您不需要定義行數和列數,它們會自動添加。

以Combobox爲例。用你的控件替換它

+0

我不想添加動態生成的標籤。標籤和文本框控件在我的設計中。基於某些條件它會改變能見度。所以我必須重新排列現有的控件。 – Raghuveera

+0

是我在做tblPanel.Controls.Add(panel.Controls [i],0,rowcount)同樣的事情; – Raghuveera

+0

如果我不添加tblPanel.ColumnCount = 2;那麼只有一列即將到來。 – Raghuveera