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; }
}
}
服务端控件开发 包含处理机制—— 子控件中调用住空间委托的事件实例
最新推荐文章于 2025-11-04 16:42:09 发布
本文介绍了一个自定义ASP.NET服务器控件——搜索控件的实现细节。该控件包括一个按钮和一个文本框,通过按钮点击触发搜索事件并传递文本框中的值。文章详细展示了控件的创建过程及如何响应事件。
1万+

被折叠的 条评论
为什么被折叠?



