Перебрать все пользовательские элементы управления на странице - PullRequest
5 голосов
/ 13 апреля 2010

Хотите просмотреть все пользовательские элементы управления на странице и получить их идентификаторы.Как мне это сделать?

Ответы [ 4 ]

11 голосов
/ 13 апреля 2010

Чтобы получить каждый пользовательский элемент управления, вы должны проверить тип элемента управления:

РЕДАКТИРОВАТЬ: Я изменил мой пример для рекурсивного прохождения всех элементов управления:

Метод

public void GetUserControls(ControlCollection controls)
{
    foreach (Control ctl in controls)
    {
        if (ctl is UserControl)
        {
            // Do whatever.
        }

        if (ctl.Controls.Count > 0)
            GetUserControls(ctl.Controls);
    }
}

Вызывается

GetUserControls(Page.Controls);
3 голосов
/ 13 апреля 2010

Это должно работать:

var listOfUserControls = GetUserControls(Page);

...

public List<UserControl> GetUserControls(Control ctrl)
{
  var uCtrls = new List<UserControl>();
  foreach (Control child in ctrl.Controls) {
    if (child is UserControl) uCtrls.Add((UserControl)child);
    uCtrls.AddRange(GetUserControls(child);
  }

  return uCtrls;
}
2 голосов
/ 19 января 2013

Я создал для этого метод расширения, который прекрасно работает с LINQ.

<Extension()>
Public Function DecendentControls(ParentControl As Control) As Control()
    Dim controls As New List(Of Control)

    For Each myControl As Control In ParentControl.Controls
        controls.Add(myControl)
        controls.AddRange(myControl.DecendentControls)
    Next

    Return controls.ToArray
End Function

Затем с помощью LINQ вы можете сделать что-то вроде этого, чтобы снять все флажки на странице:

For Each myControl As CheckBox In pnlMain.DecendentControls.Where(Function(x) TypeOf x Is CheckBox)
    myControl.Checked = False
Next
2 голосов
/ 13 апреля 2010
foreach(Control control: Page.Controls)
{

    //do something with control object

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...