用于在运行时创建控件的通用函数

时间:2010-11-29 23:03:45

标签: c# dynamic controls generics

我想在运行时使用C#向我的aspx Web表单添加控件 我想写一个通用函数,它将创建任何类型的控件(例如:文本框,标签,按钮等)。

请任何想法。 谢谢 BB

3 个答案:

答案 0 :(得分:3)

我想你可以这样做:

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

         //add control and configure it, etc etc
}

答案 1 :(得分:2)

只要您要使用的控件类型都具有默认构造函数,就可以执行此操作。

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

答案 2 :(得分:2)

将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方法中,我循环遍历我们想要在phTextBoxes占位符中动态创建的'n'个控件。