using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.ComponentModel;
namespace PEONormalControl
...{
/**//// <summary>
/// 回传事件参数类型
/// </summary>
public class EventTextBoxEventArgs:EventArgs
...{
private string _ToAppend;
EventTextBoxEventArgs()
...{
}
public EventTextBoxEventArgs(String ArgText)
...{
this._ToAppend=ArgText;
}
/**//// <summary>
/// 回传事件参数
/// </summary>
public String ArgText
...{
get...{return _ToAppend;}
set...{_ToAppend =value;}
}
}
/**//// <summary>
/// 从TextBox继承,实现了IPostBackEventHandler接口
/// </summary>
[DefaultProperty('Text'),
ToolboxData('<{0}:EventTextBox runat=server></{0}:EventTextBox>')]
public class EventTextBox : System.Web.UI.WebControls.TextBox,IPostBackEventHandler
...{
//private string text;
private static readonly object objEventChangedKey;
public delegate void EventChangedHandler(object sender,EventTextBoxEventArgs e);
[Bindable(false),
Category('Appearance'),
DefaultValue('')]
public string PrefixText
...{
get
...{ if (ViewState['PrefixText'] == null)
return '';
else
return ViewState['PrefixText'].ToString() ;
}
set
...{
ViewState['PrefixText'] = value;
}
}
/**//// <summary>
/// 引起回传的事件名称
/// </summary>
[Bindable(false),
Category('Behavior'),
DefaultValue(''),Description('引起回传的事件名称')]
public string EventName
...{
get
...{ if (ViewState['EventName'] == null)
return '';
else
return ViewState['EventName'].ToString() ;
}
set
...{
ViewState['EventName'] = value;
}
}
/**//// <summary>
/// 回传事件参数
/// </summary>
[Bindable(false),
Category('Behavior'),
DefaultValue(''),Description('回传事件参数')]
public string EventArgText
...{
get
...{ if (ViewState['EventArgText'] == null)
return '';
else
return ViewState['EventArgText'].ToString() ;
}
set
...{
ViewState['EventArgText'] = value;
}
}
/**//// <summary>
/// 用户自定义的回传函数
/// </summary>
[Bindable(false),
Category('Behavior'),
DefaultValue(''),Description('用户自定义的回传函数,为空则使用标准的回传函数')]
public String UserPostBackFunction
...{
get
...{ if (ViewState['UserPostBackFunction'] == null)
return '';
else
return ViewState['UserPostBackFunction'].ToString() ;
}
set
...{
ViewState['UserPostBackFunction'] = value;
}
}
protected virtual void OnEventChanged(EventTextBoxEventArgs e)
...{
EventChangedHandler handler1 = (EventChangedHandler) base.Events[objEventChangedKey];
if (handler1 != null)
...{
handler1(this, e);
}
}
public void RemoveStateView(String strKey)
...{
this.ViewState.Remove(strKey);
}
[Description('EventTextBox_OnEventChanged'), Category('Action')]
public event EventChangedHandler EventChanged
...{
add
...{
base.Events.AddHandler(objEventChangedKey, value);
}
remove
...{
base.Events.RemoveHandler(objEventChangedKey, value);
}
}
/**//// <summary>
/// 将此控件呈现给指定的输出参数。
/// </summary>
/// <param name='output'> 要写出到的 HTML 编写器 </param>
protected override void Render(HtmlTextWriter output)
...{
EventChangedHandler handler1 = (EventChangedHandler) base.Events[objEventChangedKey];
if (handler1 != null && EventName != String.Empty)
...{
base.Attributes[EventName]=UserPostBackFunction==''? Page.GetPostBackClientEvent(this,EventArgText):UserPostBackFunction;
if(PrefixText != '' && !base.Text.StartsWith(PrefixText)) base.Text = PrefixText + base.Text;
}
base.Render(output);
}
//增加自己想渲染的属性
protected override void AddAttributesToRender(HtmlTextWriter writer)
...{
//writer.AddAttribute(HtmlTextWriterAttribute.Title,'PEOControl');
base.AddAttributesToRender (writer);
}
IPostBackEventHandler 成员#region IPostBackEventHandler 成员
public void RaisePostBackEvent(string eventArgument)
...{
// TODO: 添加RaisePostBackEvent 实现
EventTextBoxEventArgs e = new EventTextBoxEventArgs(eventArgument);
OnEventChanged(e);
}
#endregion
}
}
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。