2015-11-14 3 views
0

в окнах образует приложение, с помощью TableLayoutPanel мы получаем все управление с функциейКак получить элементы управления из формы, которая не использует TableLayoutPanel?

Control control in tableLayoutPanel1.Controls 

есть способ, чтобы получить контроль, если я не использую TableLayoutPanel в моей форме?

+0

Что вы подразумеваете под * получить контроль, если я не использую TableLayoutPanel в моей форме *? –

ответ

0

Если элементы управления не размещены в TableLayoutPanel, то они, вероятно, будут в самой основной форме. Таким образом, ypu может прорезать их следующим образом:

foreach(Control control in this.Controls) 
{ 
    //do somthing with the controls 
} 
+0

спасибо за ваш ответ, @alexjolig. оно работает. – red

0

Вы можете создать метод расширения вроде следующего:

public static class ControlExtensions 
{ 
    public static IEnumerable<Control> GetAllControls(this Control containerControl) 
    { 
     var controls = Enumerable.Empty<Control>(); 
     controls = controls.Concat(containerControl.Controls.Cast<Control>()); 
     foreach (Control control in containerControl.Controls) 
     { 
      controls = controls.Concat(control.GetAllControls()); 
     } 
     return controls; 
    } 
} 

И использовать его как это:

foreach (Control c in theForm.GetAllControls()) 
{ 
    Debug.WriteLine(c.Name); 
} 

обратите внимание на то метод GetAllControls может быть использован с любым Control, а не только с Form

Смежные вопросы