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; }
}
}
服务端控件开发 包含处理机制—— 子控件中调用住空间委托的事件实例
最新推荐文章于 2024-07-18 17:39:42 发布