2013-07-02 5 views
0

Я пытаюсь реализовать вложенный TableLayoutPanel. Я пытаюсь динамически создавать/загружать дочерние элементы TableLayoutPanel внутри родительского стола TableLayoutPanel. Для этого я беру родительский TableLayoutPanel и рисую его из панели инструментов visual studio. один DropDownList для динамического создания дочернего элемента TableLayoutPanel Я назначаю некоторые значения в раскрывающемся списке, таком как 2 * 2,2 * 3,3 * 3,4 * 4, когда выбранное изменение индекса является огнем, рисует дочерний TableLayoutPanel. Мой код нижеПроблема при создании Nested 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); 
     } 
    } 
} 

enter image description here , но на самом деле проблема в том, когда я создаю ребенка TableLayoutPanel форматирование не правильно

+0

Что не является правильным? вы не видите какие-либо дочерние панели, или они ошибочны? – Bolu

+0

@Bolu Я хочу отображать дочерний стол TableLayoutPanel внутри родительского столаLayoutPanel правильно отформатирован. –

+0

Каков результат, который вы получаете в настоящий момент с помощью кода выше? – Bolu

ответ

0

Я предполагаю, что вы хотите, чтобы заполнить каждый ребенок панели Таким образом, вам нужно добавить objTableLayoutPanel.Dock=DockStyle.Fill;

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

дает мне тот же результат, что и на экране shot ... –

+0

выравнивание ребенка TableLayoutPanel не является правильным –

+0

Убедитесь, что у вас нет других настроек, переписать 'DockStyle' как' Anchor' .... Так что переместите 'objTableLayoutPanel.Dock = DockStyle.Fill;' just выше 'parentTableLayoutPanel.Controls.Add (objTableLayoutPanel, i, j);' (убедитесь, что между другими кодами нет других параметров и никаких других параметров 'objTableLayoutPanel' после его добавления в' parentTableLayoutPanel') и попробуйте – Bolu