简单ToolBar工具条控件。
感谢JYK的指点。
本文是参考JYK
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler
以及seyon
自定义控件学习笔记(5):事件委托列表的使用
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
namespace Comm.UI
{
[ToolboxData("<{0}:ToolBar runat=server></{0}:ToolBar>")]
public class ToolBar : WebControl, INamingContainer
{
#region 声明
private Panel pnlFrame = new Panel(); //承载其它控件的容器Panel控件
private System.Web.UI.WebControls.Button _btnSave = new Button();
private System.Web.UI.WebControls.Button _btnCancel = new Button();
#endregion
#region 界面
/**/
/// <summary>
/// 由 ASP.NET 页面框架调用,以通知使用基于合成的实现的服务器控件
/// 创建它们包含的任何子控件,以便为回发或呈现做准备。
/// </summary>
protected override void CreateChildControls()
{
//从当前服务器控件的 ControlCollection 对象中移除所有控件。
Controls.Clear();
CreateControlHierarchy();
//删除服务器控件的所有子控件的视图状态信息。
ClearChildViewState();
}
/**/
/// <summary>
/// 创建并添加子控件
/// </summary>
protected virtual void CreateControlHierarchy()
{
//1.写一些关于控件添加或者与控件有关属性预设值的代码
/**/
/**/
this._btnCancel.ID = "Cancel";
this._btnCancel.CommandName = "Cancel";
this._btnCancel.Text = "Cancel";
this._btnSave.ID = "Save";
this._btnSave.CommandName = "Save";
this._btnSave.Text = "Save";
//给按钮添加内部事件
_btnSave.Click += new EventHandler(btn_Click);
_btnCancel.Click += new EventHandler(btn_Click);
//2.将控件添加进当前正在设计的控件
this.Controls.Add(_btnSave);
this.Controls.Add(_btnCancel);
this.Controls.Add(pnlFrame);
}
#endregion
#region 内部事件
void btn_Click(object sender, EventArgs e)
{
//调用外部事件
Button btn = (Button)sender;
//TestClick(sender, e);
switch (btn.ID.ToLower())
{
case "save":
//if (SaveClick != null) SaveClick(sender, e);
OnSaveClick(sender, e);
break;
case "cancel":
OnCancelClick(sender, e);
break;
}
}
#endregion
#region Click Event
public delegate void SaveEventHandler(object sender, EventArgs e);
public delegate void CancelEventHandler(object sender, EventArgs e);
protected static readonly object EventSaveClick = new object();
protected static readonly object EventCancelClick = new object();
public event SaveEventHandler SaveClick
{
add
{
Events.AddHandler(EventSaveClick, value);
}
remove
{
Events.RemoveHandler(EventSaveClick, value);
}
}
public event CancelEventHandler CancelClick
{
add
{
Events.AddHandler(EventCancelClick, value);
}
remove
{
Events.RemoveHandler(EventCancelClick, value);
}
}
#endregion
#region MyRegion
protected void OnSaveClick(object sender, EventArgs e)
{
SaveEventHandler saveE = (SaveEventHandler)base.Events[EventSaveClick];
if (saveE != null)
{
saveE(sender, e);
}
}
protected void OnCancelClick(object sender, EventArgs e)
{
CancelEventHandler dd = (CancelEventHandler)base.Events[EventCancelClick];
if (dd != null)
{
dd(sender, e);
}
}
#endregion
#region 将此控件呈现给指定的输出参数
/// <summary>
/// 将此控件呈现给指定的输出参数。
/// </summary>
/// <param name="output"> 要写出到的 HTML 编写器 </param>
protected override void Render(HtmlTextWriter output)
{
base.Render(output);
output.Write(" ");
//this._btnSave.RenderControl(output);
//this._btnCancel.RenderControl(output);
}
#endregion
}
}

浙公网安备 33010602011771号