《Asp.net服务器控件与组件开发》第9章的NavButton代码的个人研究[1]

[入库:2005年8月18日] [更新:2007年3月25日]

本文简介:选择自 anpuso 的 blog

navbutton代码

using system.web.ui.webcontrols;
using system.componentmodel;


namespace webcontroltestitem
{
 /// <summary>
 /// webcustomcontrol 的摘要说明。
 /// </summary>
 [defaultevent("clicknext"),
 defaultproperty("nexttext"),
 toolboxdata("<{0}:simplebutton runat=server></{0}:simplebutton>")
 ]
 public class simplebutton:webcontrol,ipostbackeventhandler
 {
  private string _nexttext;
  private string _previoustext;
  [bindable(true),
  category("外观"),
  defaultvalue("next"),
  description("显示在按钮上的文字")
  ]
  public virtual string nexttext
  {
   get{ return((_nexttext==null)?string.empty:_nexttext);}
   set{_nexttext=value;}
  }
  
  [bindable(true),
  category("外观"),
  defaultvalue("previous"),
  description("显示在按钮上的文字")
  ]
  public virtual string previoustext
  {
   get{ return((_previoustext==null)?string.empty:_previoustext);}
   set{_previoustext=value;}
  }

  /*protected override htmltextwritertag tagkey
  {
    get { return htmltextwritertag.input;}
  }
  */
  //click事件的键
  private static readonly object eventclicknext=new object();
  private static readonly object eventclickpreivous=new object();
  
  //事件属性
  [category("操作"),description("按下时触发按钮单击事件")]
  public event eventhandler clicknext
  {
   add{
    events.addhandler(eventclicknext,value);
   }
   remove{events.removehandler(eventclicknext,value);}
  }

  [category("操作"),description("按下时触发按钮单击事件")]
  public event eventhandler clickpreivous
  {
   add
   {
    events.addhandler(eventclickpreivous,value);
   }
   remove{events.removehandler(eventclickpreivous,value);}
  }

  protected virtual void onclicknext(eventargs e)
  {
   eventhandler clickhandler=(eventhandler)events[eventclicknext];
   if(clickhandler!=null)
    clickhandler(this,e);
  }

  protected virtual void onclickpreivous(eventargs e)
  {
   eventhandler clickhandler=(eventhandler)events[eventclickpreivous];
   if(clickhandler!=null)
    clickhandler(this,e);
  }
  
  /*protected override void addattributestorender(htmltextwriter writer)
  {
   base.addattributestorender(writer);
   writer.addattribute(htmltextwriterattribute.name,this.uniqueid);
   writer.addattribute(htmltextwriterattribute.type,"submit");
   writer.addattribute(htmltextwriterattribute.value,this.text);
  }*/
  

  #region ipostbackeventhandler 成员

  public void raisepostbackevent(string eventargument)
  {
   // todo:  添加 simplebutton.raisepostbackevent 实现
   if(eventargument=="下一步")
    onclicknext(eventargs.empty);
   if(eventargument=="上一步")
    onclickpreivous(eventargs.empty);
  }

  #endregion
  protected override void render(htmltextwriter writer)
  {
   if(page!=null)
    page.verifyrenderinginserverform(this);
   base.render (writer);

本文关键:《Asp.net服务器控件与组件开发》第9章的NavButton代码的个人研究
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top