使用者控制項(動態載入)

2021-03-31 08:57:00 字數 1884 閱讀 7814

所謂動態載入,就是一開始不把使用者控制項直接新增到.aspx頁面上,而是根據需要從codebehind**那裡以程式設計方式新增。這樣做的好處是可以針對不同的需要載入不同的使用者控制項。要注意的是,我這裡說的載入的辦法是用codebehind時要做的,如果只是用塊在aspx頁面加**來實現這個,可能方法會不同,具體可以參看.*** framework sdk 文件,位址--點這裡

---。

下面來看codebehind的解決辦法。

這一句就是把***.ascx檔案裡的使用者控制項取出來,返回的是control型別

得到使用者控制項後,就可以把控制項加到頁面的某個容器控制項裡面

//宣告乙個容器

protected system.web.ui.webcontrols.placeholder placelogin;

//把剛才的控制項加到裡面

placelogin.controls.add(uclogin);

placeholder控制項是乙個專門用來乘放東西的控制項,在頁控制項層次結構中為以程式設計方式新增的控制項保留位置。

這樣基本工作就完成了,但是……要做的還有很多。如果只是這樣做的話,我們沒有辦法使用使用者控制項自定義的屬性和事件。因為這裡是載入了乙個control型別的控制項。要使用我們自己的控制項,需要做的就是把這個轉換成自己的控制項型別。從物件導向的角度來看,其實就是在同乙個命名空間裡做的兩個類之間的操作。

private uc_event uclogin;

private void page_load(object sender, system.eventargs e)

上面的**順便加了乙個設定屬性的語句,現在這個語句可以起作用。值得一提的是,vs.***一般在這裡會給出智慧型提示來讓你選擇需要的屬性。

還記得我們的uc_event控制項還有乙個logiin事件嗎?現在我們也可以使用這個事件,按照事件一般都放到 initialize***ponent()裡面,我們也可以把這個事件放到那裡,

private void initialize***ponent()

然後執行……出錯了吧~~~這是因為asp.***的頁面執行流程是 oninit --> page_load , initialize***ponent()在oninit裡面,所以就先執行這個,可是在執行這個的時候還沒有對uclogin進行具體的操作呢!

解決的辦法是把這個事件的訂閱放到設定屬性的後面

uclogin=(uc_event)loadcontrol("uc_event.ascx");

placelogin.controls.add(uclogin);

uclogin.boxbgcolor="#000000";

this.uclogin.login+=new prac.uc_event.loginhandler(uclogin_login);

這樣就沒有問題了。現在可以容易的根據條件進行不同控制項的載入了。

private uc_event uclogin;

private userck uck;

private void page_load(object sender, system.eventargs e)

}else

}要注意的是,雖然是根據條件載入不一樣的控制項,可是宣告的時候還是兩個都做比較方便。

總的來說,載入使用者控制項的過程其實就是乙個類在另乙個類裡面的引用,當然,這兩個類都在同一命名空間裡

。因為這些都是在codebehind裡面完成的,而且在宣告控制項例項的時候用的都是private級別的,所以也就不需要在.aspx頁面上放什麼東西了。

這是前面的.aspx頁面的全部內容:

<%@ page language="c#" codebehind="uc_load.aspx.cs" autoeventwireup="false" inherits="prac.uc_load" %>

我們的使用者控制項就新增在紅色部分。

WPF 動態載入使用者控制項

效果如圖 完成功能是讀取選單的配置檔案,載入選單,點選選項後,動態生成ui控制項並載入到tabcontrol中 關鍵 這裡可以動態載入其他dll檔案中的元件 assembly assem assembly.loadfile var onepage assem.createinstance data....

動態載入使用者控制項內容

根據使用者控制項的虛擬路徑獲取使用者控制項的html內容 使用者控制項的虛擬路徑 使用者控制項的html內容 public string getusercontrolcontents string usercontrolvirtualpath 過濾html 使用者控制項html內容 過濾後的html...

動態載入使用者控制項的元件!

我們寫使用者控制項的目的就是放到頁面中去。根據不同的條件,我們可以改變載入的使用者控制項!其實原理就是masterpage的原理。這個masterpage會在vs2005中提供,但是現在也可以實現。在我的專案中就用到 masterpage就四個類,其中容器就動態載入使用者控制項。這種功能在vs200...