用户控件的简单使用例子,做一个用户登陆的用户控件。
用户登陆某个系统是个非常常见的问题,这里笔者想把这样的问题作为一个用户控件来使用,方便各个用户。
1、在工程中新建立一个Web用户控件,此时加入的名称为FrLogin.ascs。
2、把需要的控件拖放到该web中,比如两个Label,两个TextBox,一个Button分别命名为lblUserName,lblPassword,txtUserName,txtPassword,btnLogin
3、增加两个TextBox的属性代码
public string UserName
{
get{return this.txtUserName.Text;}
set{this.txtUserName.Text=value;}
}
public string Password
{
get{return this.txtPassword.Text;}
set{this.txtPassword.Text=value;}
}
这样就可以在你的用户控件拖放到另一个Web页面中时获取或设置他们的值了。
4、添加Button事件的代理
先双击你的btnLogin产生相应事件处理函数
private void btnRegister_Click(object sender, System.EventArgs e)
{
}
然后声明事件的代理
public delegate void OnRegisterClickedHandler(object sender, System.EventArgs e);注意此处的签名要正确。
public event OnRegisterClickedHandler OnRegisterClicked;
5、修改btnRegister_Click函数
增加如下代码,即执行代理
if(OnRegisterClicked!=null)
OnRegisterClicked(sender,e);
到这里你的用户控件已经定已完成。很简单是吗?因为.net环境已经帮助你完成了很多的后台操作。
6、把FrLogin.ascs拖放到你需要引用的页面中,.net已经为你产生了<%@ Register TagPrefix="uc1" TagName="FrLogin" Src=../../"FrLogin.ascx" %>
<uc1:FrLogin id="FrLogin1" backColor="Black" runat="server"></uc1:FrLogin>,这些都是自动的。这里的缺陷是它并没有帮你在TestPage.ASPx.cs生成protected FrLogin FrLogin1;代码,你需要手工添加。注意控件的名称要与HTML定义中的一致。
7、在InitializeComponent()增加事件代理的真正处理函数
this.FrLogin1.OnRegisterClicked+=new Reques.FrLogin.OnRegisterClickedHandler(OnRegisterClicked);
8、处理你的事件
private void OnRegisterClicked(object sender, System.EventArgs e)
{
Response.Write("user Name:"+ this.FrLogin1.UserName+ "Password" + this.FrLogin1.Password);
}
注意此处的签名.
好了,已经完成了,试试看。