本篇教你動态添加使用者控件。
為了讓使用者控件能ASP.NET頁面實作動态添加,首先寫一個接口IGetUCable,這個接口有一個函數,傳回對象類型是UserControl。

View Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
/// <summary>
/// Summary description for IGetUCable
/// </summary>
namespace Insus.NET
{
public interface IGetUCable
{
UserControl GetUC();
}
}
有了接口之後,需要建立使用者控件Calculator.ascx:

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="Calculator.ascx.cs" Inherits="Calculator" %>
Number A: <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> <br />
+ <br />
Number B: <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox><br />
<asp:Button ID="ButtonEqual" runat="server" Text="="
OnClick="ButtonEqual_Click1" />
<br />
Result: <asp:Label ID="LabelResult" runat="server" Text=""></asp:Label>
Calculator.ascx.cs,cs實作接口:

using System.Web.UI.WebControls;
using Insus.NET;
public partial class Calculator : System.Web.UI.UserControl,IGetUCable
{
protected void Page_Load(object sender, EventArgs e)
protected void ButtonEqual_Click1(object sender, EventArgs e)
decimal a = decimal.Parse(this.TextBox1.Text.Trim());
decimal b = decimal.Parse(this.TextBox2.Text.Trim());
this.LabelResult.Text = (a + b).ToString ();
public UserControl GetUC()
return this;
}
最後是在需要加載使用者控件的aspx的Page_load事件寫:

protected void Page_Load(object sender, EventArgs e)
IGetUCable uc1 = (IGetUCable)LoadControl("~/Calculator.ascx");
this.form1.Controls.Add(uc1.GetUC());
使用者控件加載之後運作效果:
源程式(.NET3.5 + ASP.NET + C#)