2017-08-15 63 views
0

我们可以在TableLayoutPanel中显示多个DataGridView吗?如果是的话,我们怎么能做到这一点?我在msdn上搜索,也搜索了它,但无法找到任何与我的要求。我们可以在TableLayoutPanel中显示多个DataGridView吗?

我可以动态显示多次标签,但我正在动态查找DataGridView。

任何帮助,将不胜感激。谢谢!

+0

是的。任何控件都可以放入TableLayoutPanel。 – jdweng

+0

你可以给我看一个特别为DataGridView的例子吗?我想动态添加它。 – lucky

回答

1

尝试以下

public partial class Form1 : Form 
    { 
     const int WIDTH = 1200; 
     const int HEIGHT = 1200; 

     const int MARGIN = 200; 

     const int NUMBER_OF_ROWS = 2; 
     const int NUMBER_OF_COLS = 2; 

     static List<DataGridView> dgvs = new List<DataGridView>(); 
     public Form1() 
     { 
      InitializeComponent(); 

      this.Width = WIDTH; 
      this.Height = HEIGHT; 

      TableLayoutPanel panel = new TableLayoutPanel(); 
      this.Controls.Add(panel); 

      panel.Height = HEIGHT - MARGIN; 
      panel.Width = WIDTH - MARGIN; 
      panel.ColumnCount = NUMBER_OF_COLS; 
      panel.RowCount = NUMBER_OF_ROWS; 

      for (int row = 0; row < NUMBER_OF_ROWS; row++) 
      { 
       for (int col = 0; col < NUMBER_OF_COLS; col++) 
       { 
        DataGridView newDGV = new DataGridView(); 
        dgvs.Add(newDGV); 
        newDGV.Height = (HEIGHT - MARGIN)/NUMBER_OF_ROWS; 
        newDGV.Width = (WIDTH - MARGIN)/NUMBER_OF_COLS; 
        newDGV.Left = 50; 
        newDGV.Top = 50; 
        panel.Controls.Add(newDGV, col, row); 
       } 
      } 

     } 
+0

我已经这样做了,但我想动态地添加它,因为我不知道我需要多少个网格。 – lucky

+0

for(int i = 0; i lucky

+0

网格的数量是动态的,因为您可以在代码中设置RowCount和ColumnCount以及高度和宽度。 – jdweng

1

你怎么要孩子控制显示目前尚不清楚。你提到你可以用Label这样做,但是你没有显示任何代码,这有助于澄清。这与DataGridView完全一样。

正如您已经注意到的,您只能在TableLayoutPanel“单元格”中放置单个控件。如果您希望单元格中有多个控件,则可以先将Panel添加到TableLayoutPanel,然后将多个子控件添加到该Panel中。

但是,我会假设您真正需要的是TableLayoutPanel中可变数量的列或行,然后为每个单元添加一个DataGridView

首先,创建TableLayoutPanel或获取现有实例。

// If you are using an existing table layout panel, either clear the controls, rows and columns beforehand, 
// or keep track of them manually and adjust accordingly. 
tableLayoutPanel.Controls.Clear(); 
tableLayoutPanel.RowStyles.Clear(); 
tableLayoutPanel.ColumnStyles.Clear(); 

IList<DataGridView> dataGridViews = ... /* wherever you get your data grid views from */ 

for (int i = 0; i < dataGridViews.Count; ++i) 
{ 
    // The arguments to ColumnStyle control the size of the column. 
    // If you want to arrange them vertically instead of horizontally, use RowStyles instead. 
    // If you want a combination, you have to figure out the logic yourself. 
    // In case of SizeType.Percent, "width" defines a relative weight, not necessarily percent. 
    // If all widths are equal (no matter the value), all columns will be equally wide. 
    tableLayoutPanel.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, width: 1)); 

    dataGridViews[i].Dock = DockStyle.Fill; 
    // This adds the data grid view into that specific cell. 
    tableLayoutPanel.Controls.Add(dataGridViews[i], column: i, row: 0); 
} 
相关问题