C# 创建嵌套的TableLayoutPanel时出现问题

C# 创建嵌套的TableLayoutPanel时出现问题,c#,winforms,tablelayoutpanel,C#,Winforms,Tablelayoutpanel,我正在尝试实现嵌套的TableLayoutPanel。我正在尝试在父TableLayoutPanel中动态创建/加载子TableLayoutPanel。 为此,我使用父TableLayoutPanel并从VisualStudio工具箱中绘制它。 一个DropDownList,用于动态创建子TableLayoutPanel I在所选索引更改为fire时为DropDownList分配一些值,例如2*2,2*3,3*3,4*4,以绘制子TableLayoutPanel。 我的代码在下面 private

我正在尝试实现嵌套的TableLayoutPanel。我正在尝试在父TableLayoutPanel中动态创建/加载子TableLayoutPanel。 为此,我使用父TableLayoutPanel并从VisualStudio工具箱中绘制它。 一个DropDownList,用于动态创建子TableLayoutPanel I在所选索引更改为fire时为DropDownList分配一些值,例如2*2,2*3,3*3,4*4,以绘制子TableLayoutPanel。 我的代码在下面

private void cmbRowsColumns_SelectedIndexChanged(object sender, EventArgs e)
{   
  var selectedPair = new KeyValuePair<string, string>();
  selectedPair = (KeyValuePair<string, string>)cmbRowsColumns.SelectedItem;
  string[] rowcolumn = selectedPair.Value.Split('*');
  string strRowCount = rowcolumn[0];
  int rowCount = Convert.ToInt32(strRowCount);
  string strColumnCount = rowcolumn[1];
  int columnCount = Convert.ToInt32(strColumnCount);
  DynamicallyGenerateColumn(rowCount, columnCount);
}


private void DynamicallyGenerateColumn(int rowCount, int columnCount)
{
  parentTableLayoutPanel.Controls.Clear();
  parentTableLayoutPanel.ColumnStyles.Clear();
  parentTableLayoutPanel.RowStyles.Clear();
  parentTableLayoutPanel.ColumnCount = columnCount;
  parentTableLayoutPanel.RowCount = rowCount;
  for (int i = 0; i < columnCount; i++)
    {
      parentTableLayoutPanel.ColumnStyles.Add(new ColumnStyle(SizeType.AutoSize));
      for (int j = 0; j < rowCount; j++)
        {
        if (i == 0)
         {
          parentTableLayoutPanel.RowStyles.Add(new RowStyle(SizeType.AutoSize));
         }
          TableLayoutPanel objTableLayoutPanel = new  TableLayoutPanel();                  
          parentTableLayoutPanel.Controls.Add(objTableLayoutPanel, i, j);
       }
     }
 }
private void cmbRowsColumns\u SelectedIndexChanged(对象发送方,事件参数e)
{   
var selectedPair=新的KeyValuePair();
selectedPair=(KeyValuePair)CMBROWS列。SelectedItem;
string[]rowcolumn=selectedPair.Value.Split('*');
字符串strRowCount=rowcolumn[0];
int rowCount=Convert.ToInt32(strRowCount);
字符串strColumnCount=rowcolumn[1];
int columnCount=Convert.ToInt32(strColumnCount);
动态生成列(行计数、列计数);
}
私有void DynamicallyGenerateColumn(int行计数、int列计数)
{
parentTableLayoutPanel.Controls.Clear();
parentTableLayoutPanel.ColumnStyles.Clear();
parentTableLayoutPanel.RowStyles.Clear();
parentTableLayoutPanel.ColumnCount=ColumnCount;
parentTableLayoutPanel.RowCount=行计数;
对于(int i=0;i

但实际上问题是,当我创建子TableLayoutPanel时,格式设置不正确,我想您需要填充每个子面板,所以需要添加
objTableLayoutPanel.Dock=DockStyle.fill

TableLayoutPanel objTableLayoutPanel = new  TableLayoutPanel(); 
objTableLayoutPanel.Dock = DockStyle.Fill;
parentTableLayoutPanel.Controls.Add(objTableLayoutPanel, i, j);

什么不合适?您看不到任何子面板或子面板的编号错误?@Bolu我想在父表LayoutPanel中正确地显示子表LayoutPanel。使用上面的代码,您目前得到的结果是什么?这种问题应该需要一些屏幕截图来描述。@KingKing我添加了屏幕截图以获取更多信息clear idea子表布局面板的对齐不正确请确保没有其他设置覆盖
DockStyle
锚定
。。。。所以move
objTableLayoutPanel.Dock=DockStyle.Fill
就在parentTableLayoutPanel.Controls.Add(objTableLayoutPanel,i,j)的上方
(请确保其间没有其他代码,并且在将其添加到
parentTableLayoutPanel
后,确保没有其他设置
objTableLayoutPanel
),并根据您的代码片段尝试更改代码,但无效