服务端控件开发 包含处理机制—— 子控件中调用住空间委托的事件实例
来源:互联网 发布:python for in range 编辑:程序博客网 时间:2024/06/03 13:07
using System;using System.Collections.Generic;using System.ComponentModel;using System.Linq;using System.Text;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;namespace ServerControl{ [DefaultProperty("Text")] [ToolboxData("<{0}:SearchControl runat=server></{0}:SearchControl>")] public class SearchControl : CompositeControl { private Button btnSearch; private TextBox tbSearchText; [Category("搜索")] [DefaultValue("")] [Description("获取文本的值")] public string Text { get { this.EnsureChildControls(); return tbSearchText.Text; } } private static readonly object ButtonSearchClickObject = new object(); public event SearchEventHandler ButtonSearchClick { add { base.Events.AddHandler(ButtonSearchClickObject, value); } remove { base.Events.RemoveHandler(ButtonSearchClickObject, value); } } protected override void CreateChildControls() { //base.CreateChildControls(); this.Controls.Clear(); btnSearch = new Button(); btnSearch.ID = "btn"; btnSearch.Text = "搜索"; btnSearch.Click += new EventHandler(btnSearch_Click); tbSearchText = new TextBox(); tbSearchText.ID = "tb"; this.Controls.Add(btnSearch); this.Controls.Add(tbSearchText); } protected virtual void OnButtonSearchClick(SearchEventArgs e) { SearchEventHandler ButtonSearchClickHandler=(SearchEventHandler)base.Events[ButtonSearchClickObject]; if (ButtonSearchClickHandler != null) { ButtonSearchClickHandler(this, e); } } void btnSearch_Click(object sender, EventArgs e) { //throw new NotImplementedException(); SearchEventArgs args = new SearchEventArgs(); args.SearchValue = this.Text; OnButtonSearchClick(args); } protected override void Render(HtmlTextWriter writer) { writer.AddAttribute(HtmlTextWriterAttribute.Border, "0px"); writer.AddAttribute(HtmlTextWriterAttribute.Cellpadding, "0px"); writer.AddAttribute(HtmlTextWriterAttribute.Cellspacing, "0px"); writer.RenderBeginTag(HtmlTextWriterTag.Table); writer.RenderBeginTag(HtmlTextWriterTag.Tr); writer.RenderBeginTag(HtmlTextWriterTag.Td); tbSearchText.RenderControl(writer); writer.RenderEndTag(); writer.RenderBeginTag(HtmlTextWriterTag.Td); btnSearch.RenderControl(writer); writer.RenderEndTag(); writer.RenderEndTag(); writer.RenderEndTag(); } public delegate void SearchEventHandler(object sender, SearchEventArgs e); } public class SearchEventArgs : EventArgs { public SearchEventArgs() { } public string SearchValue { get; set; } }}