2015-06-03 3 views
0

Нужна помощь в поиске TableLayoutPanel, добавленного во время выполнения, в элемент управления вкладкой winform. Ниже приведен пример кода ниже. Любая помощь будет оценена по достоинству.Как найти динамически добавленный элемент управления TableLayoutPanel в элементе управления вкладкой winform

private void GenerateControls() 
{ 
    TableLayoutPanel tp = new TableLayoutPanel(); 
    tp.Name = "tpName"; 
    tab1.Controls.Add(tp); 
} 

private void findTablePanelControl() 
{ 
    TableLayoutPanel tp = (TableLayoutPanel)this.Controls.Find("tpName", true)[0]; 
    string name = tp.Name; 
} 

Получать следующее сообщение об ошибке: Индекс находился за пределами массива.

Я также попытался следующий код, но получаю эту ошибку (ссылка на объект не указывает на экземпляр объекта) на «имя строки =» строка:

TableLayoutPanel tpParseSchema = (TableLayoutPanel)this.Controls.Find("tpParseSchema", true).FirstOrDefault(); 
+0

Я нашел проблему. Фактический пример предоставления примера кода. Проблема с моим реальным кодом заключалась в том, что я ошибочно набрал неправильное имя для панели. Я закончил тем, что понял это, рекурсивным образом перешагнув все дочерние элементы управления вкладкой. Вот пример кода, как я это сделал. – Paul

ответ

0

Я нашел проблему. Приведенный пример кода действительно будет работать. Проблема с моим реальным кодом заключалась в том, что я ошибочно указал неправильное имя для TableLayoutPanel. Я закончил тем, что понял это, рекурсивным образом перешагнув все дочерние элементы управления вкладкой. Вот пример кода, как я это сделал.

foreach (Control ctrl in tab1.Controls) 
{ 
    string ctrlname = ctrl.Name; 
}