通过编程方式实例化用户控件及LoadControl方法

        因为用户控件的类型是动态生成的,所以用户控件不能使用实例化一个类的new语法来通过编程方式创建。要通过编程方式创建用户控件,一定要调用页面的LoadControl方法。LoadControl方法接受到用户源文件的相对路径并且返回一个类型为Control的对象,可以将该对象转换成用户控件的强类型。

        LoadControl方法(string):根据指定的虚拟路径从文件加载 Control 对象。语法:public Control LoadControl(string virtualPath)。说明

参数

virtualPath

类型:System.String

控件文件的虚拟路径。

返回值

类型:System.Web.UI..::.Control

返回指定的 Control

        如果该控件支持缓存,则从 LoadControl 方法返回的对象实际上并不是 Control 对象,而是 PartialCachingControl 对象。如果 virtualPath 参数是相对的,则所加载控件的路径相对于 TemplateControl 的路径。

在将控件加载到容器控件时,该容器引发所添加控件的所有事件,直到所添加控件参与当前事件为止。但是,所添加控件不参与回发数据处理。为了使所添加控件参与回发数据处理(包括验证),必须将该控件添加到 Init 事件中,而不是 Load 事件中。

示例:下面的代码示例演示如何使用 LoadControl 方法向 ASP.NET 页添加一个用户控件。

OnInit 事件方法中,此页使用 LoadControl 方法以编程方式在此页中创建用户控件。然后此方法将该控件添加到名为 Placeholder1 PlaceHolder Web 服务器控件的 Controls 属性中。

void Page_Init(object sender, System.EventArgs e)

{

    // Instantiate the UserControl object

    MyControl myControl1 =

        (MyControl)LoadControl("TempControl_Samples1.ascx.cs");

    PlaceHolder1.Controls.Add(myControl1);

}

你可能感兴趣的:(load)