高手請幫忙,如何給定制控件添加事件

JiaMin_Liu 2005-08-19 08:29:17
如何給定制控件添加事件?能否發個實例看一下,謝謝!
...全文
95 5 打赏 收藏 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zqx518 2005-08-22
  • 打赏
  • 举报
回复
using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.ComponentModel;
using System.Text;

namespace PassWordCtl
{
/// <summary>
/// WebCustomControl1 的摘要描述。
/// </summary>
[DefaultProperty("Text"),
ToolboxData("<{0}:PassCtl runat=server></{0}:PassCtl>")]
public class PassCtl : System.Web.UI.WebControls.WebControl,IPostBackDataHandler,IPostBackEventHandler
{
public event EventHandler InvalidPasswordConfirmation;
public event EventHandler RaisePassWord;

//保存提交的變量值
private string newpwd;
private string confirmpwd;


private void onInvalidPasswordConfirmation()
{
if (InvalidPasswordConfirmation!=null)
InvalidPasswordConfirmation(this,new EventArgs());
}

private void onRaisePassWord()
{
if(RaisePassWord!=null)
RaisePassWord(this,new EventArgs());
}

/// <summary>
/// 呈現這個控制項到 output 參數所指定的物件。
/// </summary>
/// <param name="output"> 指定要輸出的 HTML 寫入器 (HTMLTextWriter)</param>
protected override void Render(HtmlTextWriter output)
{
output.RenderBeginTag(HtmlTextWriterTag.Table);

output.RenderBeginTag(HtmlTextWriterTag.Tr);
output.RenderBeginTag(HtmlTextWriterTag.Td);
output.Write("OlePwd");
output.RenderEndTag();
output.RenderBeginTag(HtmlTextWriterTag.Td);
output.Write("<input type=\"password\" name=\""+this.UniqueID+"\"+ width=\"25\"></input>");
output.RenderEndTag();
output.RenderEndTag();

output.RenderBeginTag(HtmlTextWriterTag.Tr);
output.RenderBeginTag(HtmlTextWriterTag.Td);
output.Write("newPwd");
output.RenderEndTag();
output.RenderBeginTag(HtmlTextWriterTag.Td);
output.Write("<input type=\"password\" name=\""+this.UniqueID+":newpwd\"+ width=\"25\"></input>");
output.RenderEndTag();
output.RenderEndTag();

output.RenderBeginTag(HtmlTextWriterTag.Tr);
output.RenderBeginTag(HtmlTextWriterTag.Td);
output.Write("confirmPwd");
output.RenderEndTag();
output.RenderBeginTag(HtmlTextWriterTag.Td);
output.Write("<input type=\"password\" name=\""+this.UniqueID+":confirmpwd\"+ width=\"25\"></input>");
output.RenderEndTag();
output.RenderEndTag();

output.RenderBeginTag(HtmlTextWriterTag.Tr);
output.RenderBeginTag(HtmlTextWriterTag.Td);
output.AddAttribute(HtmlTextWriterAttribute.Type,"submit");
output.AddAttribute(HtmlTextWriterAttribute.Value,"PWDChanged");
output.RenderBeginTag(HtmlTextWriterTag.Input);
output.RenderEndTag();
output.RenderEndTag();
output.RenderBeginTag(HtmlTextWriterTag.Td);
output.AddAttribute(HtmlTextWriterAttribute.Type,"Reset");
output.AddAttribute(HtmlTextWriterAttribute.Value,"Reset");
output.AddAttribute(HtmlTextWriterAttribute.Onclick,Page.GetPostBackEventReference(this,"Reset"));
output.RenderBeginTag(HtmlTextWriterTag.Input);
output.RenderEndTag();
output.RenderEndTag();

output.RenderEndTag();

output.RenderEndTag();

}
#region IPostBackDataHandler 成員

public void RaisePostDataChangedEvent()
{
// TODO: 加入 WebCustomControl1.RaisePostDataChangedEvent 實作
onInvalidPasswordConfirmation();

}

public bool LoadPostData(string postDataKey, System.Collections.Specialized.NameValueCollection postCollection)
{
// TODO: 加入 WebCustomControl1.LoadPostData 實作
newpwd=(string)postCollection[this.UniqueID+":newpwd"];
confirmpwd=(string)postCollection[this.UniqueID+":confirmpwd"];

if (newpwd==confirmpwd)
return false;
else
return true;
}

#endregion

#region IPostBackEventHandler 成員

public void RaisePostBackEvent(string eventArgument)
{
// TODO: 加入 PassCtl.RaisePostBackEvent 實作
if(eventArgument=="Reset")
this.onRaisePassWord();
}

#endregion
}
}
yoyo83 2005-08-20
  • 打赏
  • 举报
回复
up!
zhaoliang_chen 2005-08-20
  • 打赏
  • 举报
回复
up
JiaMin_Liu 2005-08-20
  • 打赏
  • 举报
回复
對不起我沒表達清楚.我是想說如何在定制控件的類中給定制控件添加事件以便在前調用.可否給源看看,謝謝!
TechEye 2005-08-19
  • 打赏
  • 举报
回复
namespace abc
{
//定义事件委托
public delegate void MyEventHandler(object sender, string[] args);

public class MyClass
{
//声明事件
MyEventHandler OnReceive;

private void ReceiveData()
{
//激发事件
if (OnReceive != null)
{
OnReceive(this, 你的参数);
}
}
}
}

1,979

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 其他语言讨论
社区管理员
  • 其他语言社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧