700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 用户自定义控件(UserControl)用法大全

用户自定义控件(UserControl)用法大全

时间:2023-06-20 16:17:48

相关推荐

用户自定义控件(UserControl)用法大全

1.动态加载用户控件,并利用反射机制给控件赋值

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

Type myusertype = uc.GetType();

PropertyInfoinfo1 = 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;

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。