2008年4月25日 星期五

呼叫 User Control 所定義的方法

一個 User Control,裡面大多會自己定義了許多的方法,當主頁面加入了這個 User Control之後,並想要呼叫 User Control 的方法,[Professional ASP.NET Server Controls]作者有介紹了一篇不錯的用法:



假設 User Control 定義了:
public string ShowUCMsgWithSomeString(string str)
{
return string.Format("This message is from usercontrol and with some strign :{0}", str);
}

則主頁呼叫的方式為:


// 待會給 MethodInfo 使用
using System.Reflection;

//抓目前頁面上的 UserControl
Control ctl = Page.FindControl("MyUC1");

//取得執行個體的 Type
Type ctlType = ctl.GetType();


//取得已定義的方法
MethodInfo ctlMethod = ctlType.GetMethod("ShowUCMsgWithSomeString");

//取得已定義方法的參數
ParameterInfo[] p = ctlMethod.GetParameters();

//輸入參數宣告
Object[] parameters = new Object[p.Length];
string strPassInfo = "Hello my usercontrol!";
parameters[0] = strPassInfo;

//執行 UserControl 所定義的方法
lbMsg2.Text = ctlMethod.Invoke(ctl, parameters).ToString();

程式參考:
\\3probe-server\RD2\Document\Program\User Control\UCTest01.zip

沒有留言:

張貼留言