ASP.NET自定义控件组件开发 第四章 组合控件开发CompositeControl 后篇
事件冒泡 我们上一篇已经开发一个登录的组合控件,但是我们把控件的事件的这个问题没有解决,现在我们就 来看看这个问题。 因为我们的组合控件Login是由一些已经存在的服务器控件的组合的,这样就省却了我们很多的麻烦, 上篇中我们已经把子控件的一些属性,如Text等,显示呈现为了组合控件的属性。我们将之称为“属性的 冒泡”(我自己这样认为的)。 我们现在来想下:其实我们点击“提交”按钮,我们就想把控件中信息发送给服务器,然后验证。即 ,我们点击的是“提交”按钮,但是触发的确实Login控件的验证事件。也就是说,我们应该把子控件- button的事件,上升冒泡成为Login的事件。 现在我们就正式讲讲怎么来事件冒泡。 对于事件的一些步骤,大家应该还记得: 1。定义一个数据类,用来当发生事件时,我们把一些信息携带。在本控件中,当我们点击“提交”按 钮时,我们就把用户名和密码作为数据送到服务器。所以我们的数据类包含两个信息:如下: 1 public class ValidateEventArgs:EventArgs 2 { 3 private string userName; 4 private string userPassward; 5 6 public string UserName 7 { 8 get 9 { 10 return userName ; 11 } 12 } 13 14 public string UserPassward 15 { 16 get 17 { 18 return userPassward; 19 } 20 } 21 22 public ValidateEventArgs(string username, string userpassward) 23 { 24 this.userName = username; 25 this.userPassward = userpassward; 26 } 27 } 相信大家对上面的代码不陌生!!! 2.我们来定义一个委托:
3.定义事件。 1 private static readonly object ValidateEventKey = new object(); 2 public event ValidateEventHandler ValidateUserInfoChanged 3 { 4 add 5 { 6 Events.AddHandler(ValidateEventKey, value); 7 } 8 remove 9 { 10 Events.RemoveHandler(ValidateEventKey, value); 11 } 12 } 13 14 protected virtual void OnValidateChanged(ValidateEventArgs args) 15 { 16 ValidateEventHandler handler = Events[ValidateEventKey] as ValidateEventHandler; 17 if (handler != null) 18 handler(this, args); 19 } 20 4.好了;准备都做好了,下面我们只要把这个事件冒泡成为Login的控件的就行了。其实很简单的。只 要重写一个方法就行了。 如下: 1 protected override bool OnBubbleEvent(object source, EventArgs args) 2 { 3 bool handled = false; 4 5 CommandEventArgs ce = args as CommandEventArgs; 6 if (ce != null && ce.CommandName == "Validate") 7 { 8 handled = true; 9 string userName = this.txtUserName.Text; 10 string userPassward = this.txtUserPassward.Text; 11 12 //把信息输入 13 ValidateEventArgs ve = new ValidateEventArgs(userName, userPass |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |