实现了IPostBackEventHandler接口的TextBox

原创 2005年03月04日 13:40:00
    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);
        }


   
       
#region IPostBackEventHandler 成员

       
public void RaisePostBackEvent(string eventArgument)
       
{
           
// TODO:  添加RaisePostBackEvent 实现
            EventTextBoxEventArgs e = new EventTextBoxEventArgs(eventArgument);
            OnEventChanged(e);
        }


       
#endregion

    }

}

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

C#仿QQ皮肤-TextBox 控件实现

C#仿QQ皮肤-实现原理系列文章导航                       ...

在Telerik for silverlight控件radtreeview、textBox、RadGridView中实现拖拉控件的操作

效果图: 1.首先构造实体类Team view plain public class Team       {     &...

TextBox实现自动推荐、自动补全(2)

之前子丰写过一篇类似的博文,在博文中介绍了两种自动推荐的方式,其中第二种方式有一些遗憾的地方,所以这里再次针对第二种方式提出另一种自动推荐的方式。 原博文链接:点击打开链接 http://blog...

实现Textbox+listBoxControl拼音检索 C#

在很多程序中,我们都需要用到Textbox拼音检索,在此我用TextBox和ListBox组合示例实现其拼音检索。 试验中我们实现了以下样式效果: 实现代码: 1、//添加textbox的T...

WPF实现TextBox输入文字后自动弹出数据(类似百度的输入框)

1. 创建一个继承至Canvas的控件,并命名为WPFAutoCompleteTextbox 2. 在WPFAutoCompleteTextbox.cs中增加以下代码 using System; ...

带清空按钮TextBox的实现(WPF)

摘要: 本博文针对人群:WPF新手。 博文内容:通过Style制定包含清空Button的TextBox样式模板,通过在Style中引入自定义类的附加属性完成对TextBox的内容清空。 博文目的:帮...

章鱼哥出品_VB.NET ComboBox、 TextBox 实现自动完成、自动过滤 模糊查询的功能

本文以ComboBox为例讨论自动过滤功能,主要有两种方式:(TextBox也一样)   一、以AutoCompleteSource、AutoCompleteMode、AutoCompleteCus...

登录界面中的textbox提示字段的实现

RT,可能标题描述得不是很清楚,下图就是要实现的效果: html与css部分都比较好实现,代码如下: 用户名/邮箱/手机号 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)