Общая функция для создания элементов управления во время выполнения - PullRequest
0 голосов
/ 30 ноября 2010

Я хочу добавить элементы управления в мою веб-форму aspx во время выполнения, используя C #.
Я хотел бы написать универсальную функцию, которая создаст любой тип элемента управления (например, текстовое поле, ярлык, кнопка и т. Д.).

Любые идеи, пожалуйста. Спасибо BB

Ответы [ 3 ]

3 голосов
/ 30 ноября 2010

Полагаю, вы могли бы сделать что-то вроде этого:

public void CreateControl<W>(Func<W> controlConstructor) where W : WebControl
{
         W control = controlConstructor();

         //add control and configure it, etc etc
}
2 голосов
/ 25 мая 2011

Добавление элемента управления TextBoxes в заполнитель

private void CreateTextBoxes()  
{

      for (int counter = 0; counter <= NumberOfControls; counter++)
      {
          TextBox tb = new TextBox();
          tb.Width = 150;
          tb.Height = 18;
          tb.TextMode = TextBoxMode.SingleLine;
          tb.ID = "TextBoxID" + (counter + 1).ToString();
          // add some dummy data to textboxes
          tb.Text = "Enter Title " + counter;
          phTextBoxes.Controls.Add(tb);
          phTextBoxes.Controls.Add(new LiteralControl("<br/>"));

      }

  }

В методе CreateTextBoxes я перебираю 'n' номеров элементов управления, которые мы хотим динамически создать в заполнителе phTextBoxes.

2 голосов
/ 30 ноября 2010

Вы можете сделать это, если все типы элементов управления, которые вы хотите использовать, имеют конструктор по умолчанию.

T AddControl<T>() where T : WebControl, new()
{
    T ctrl = new T();
    ...
    return ctrl;
}
...