用户控件的简单使用例子,做一个用户登陆的用户控件。 用户登陆某个系统是个非常常见的问题,这里笔者想把这样的问题作为一个用户控件来使用,方便各个用户。
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); } 注意此处的签名. 好了,已经完成了,试试看。
|