2015-08-12 3 views
0

Есть ли способ получить все экземпляры определенного типа управления на основе какой-либо другой информации. Обычно я буду использовать;Получить все экземпляры типа элемента управления на основе параметра

 public static IEnumerable<T> GetAllControlsOfType<T>(this Control parent) where T : Control 
    { 
     var result = new List<T>(); 

     foreach (Control control in parent.Controls) 
     { 
      if (control is T) 
      { 
       result.Add((T)control); 
      } 
      if (control.HasControls()) 
      { 
       result.AddRange(control.GetAllControlsOfType<T>()); 
      } 
     } 
     return result; 
    } 

Но это не будет работать, потому что я не знаю заранее, какой тип контроля я буду искать.

+0

Что вы знаете раньше времени? У вас есть экземпляр типа вообще? –

ответ

0

Если вы знаете только тип во время выполнения, вы можете использовать Type.IsInstanceOfType вместо «control is T» в вашем примере. Функция потребует параметр типа и возвращает элемент управления IEnumerable < >.

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