ASP.NET 2.0 服务器控件之复合控件事件
时间:2008-03-27 13:30:12 来源: 作者:
| [ Bindable(true), Category("Appearance"), DefaultValue(""), Description("获取或设置文本框输入文本") ] public string Text { get { EnsureChildControls(); return _textBox.Text; } set { EnsureChildControls(); _textBox.Text = value; } } // 实现事件属性结构 public event EventHandler Submit { add { Events.AddHandler(EventSubmitKey, value); } remove { Events.RemoveHandler(EventSubmitKey, value); } } // 实现OnSubmit protected virtual void OnSubmit(EventArgs e) { EventHandler SubmitHandler = (EventHandler)Events[EventSubmitKey]; if (SubmitHandler != null) { SubmitHandler(this, e); } } |
// 实现Submit事件引发的事件处理程序
| private void _button_Click(Object source, EventArgs e) { OnSubmit(EventArgs.Empty); } // 重写ICompositeControlDesignerAccessor接口的RecreateChildContrls方法 protected override void RecreateChildControls() { EnsureChildControls(); } //重写CreateChildControls方法,将子控件添加到复合控件中 protected override void CreateChildControls() { Controls.Clear(); _button = new Button(); _textBox = new TextBox(); _button.ID = "btn"; _button.Click += new EventHandler(_button_Click); this.Controls.Add(_button); this.Controls.Add(_textBox); } //重写Render方法,呈现控件中其他的HTML代码 protected override void Render(HtmlTextWriter output) { output.AddAttribute(HtmlTextWriterAttribute.Border, "0px"); output.AddAttribute(HtmlTextWriterAttribute.Cellpadding, "5px"); output.AddAttribute(HtmlTextWriterAttribute.Cellspacing, "0px"); output.RenderBeginTag(HtmlTextWriterTag.Table); output.RenderBeginTag(HtmlTextWriterTag.Tr); output.RenderBeginTag(HtmlTextWriterTag.Td); _textBox.RenderControl(output); output.RenderEndTag(); output.RenderBeginTag(HtmlTextWriterTag.Td); _button.RenderControl(output); output.RenderEndTag(); output.RenderEndTag(); output.RenderEndTag(); } } } |
如上代码所示,复合控件CompositeEvent中包含两个属性:Text和ButtonText.前者用于获取或者设置文本框中的文本内容,后者用于获取或者设置按钮的显示文本。另外,复合控件类中还实现了一个Submit事件。相关重要逻辑包括:
第一、在重写CreateChildControls方法中,为子控件Button添加事件处理程序_button_Click.
第二、和普通的自定义事件一样,为复合控件定义一个顶层事件Submit.这其中包括定义事件属性结构Submit,定义事件处理程序OnSubmit.
第三、实现_button_Click事件处理程序,调用顶层事件Submit的事件处理程序OnSubmit.
下面是为测试复合控件CompositeEvent而创建的Default.ASPx文件代码。
在以上应用中,当用户单击"提交"按钮之后,将引发demo1_Submit处理程序的执行,由此显示文本框输入内容。
下一篇:下面没有链接了













文章评论
共有 位天空网友发表了评论 查看完整内容