用戶自定義控件(UserControl)用法大全

1.動態加載用戶控件,並利用反射機制給控件賦值

UserControl uc= (UserControl) LoadControl ("../myUserControl.ascx") ; 
Type myusertype = uc.GetType();

PropertyInfo  info1 = myusertype.GetProperty("subID");

info1.SetValue(uc , subID , null);

2.利用反射調用控件中的方法,並傳值

UserControl uc = (UserControl)PlaceHolder1.Controls[0];
Type userType = uc.GetType();
MethodInfo m = userType.GetMethod("submit");
object[] objParas = new object[1];
objParas[0] = subjectID;
m.Invoke(uc, objParas);

3.在用戶控件中觸發主頁面的事件(事件委託)

 ①首先,在一aspx頁面中包含一用戶控件(RaiseControl.ascx),該用戶控件內含有一服務器端控件。

 ②在該用戶控件的後臺代碼中聲明事件委託、定義事件成員並添加一事件監視函數。代碼如下:
      
       //聲明事件委託
        public delegate void PageChangeEventHandler(string psDeliver);
       //定義事件
        public event PageChangeEventHandler MyPageChange;
       //監視事件
        protected void OnPageChange(string psStr)
        {
            if (MyPageChange != null)
           {
                MyPageChange(psStr);
           }
        }
  
 //在用戶控件的按鈕事件中,觸發已經定義的MyPageChange事件。
        protected void btnRaise_Click(object sender, EventArgs e)
        {
             string _sStr = "你點擊了用戶控件中的按鈕!";
             OnPageChange(_sStr);      
        }

 ③在其所在的頁面中編寫相應的處理函數並在頁面的Page_Load中將該處理函數綁定到用戶控件中定義的MyPageChange事件。
      
        protected void Page_Load(object sender, EventArgs e)
        {
           //利用+=進行事件委託綁定
             ctlRaiseControl.MyPageChange += this.DealwithReceived;
        }
       
        /**//// <summary>
        /// 爲用戶控件中MyPageChange事件定義的處理函數
         /// </summary>
        /// <param name="psReceive"></param>
        private void DealwithReceived(string psReceive)
        {
            lblReceive.Text = psReceive;
        }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章