实现了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

    }

}

TextBox实现自动推荐和补全

  • 2016年11月22日 13:25
  • 80KB
  • 下载

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

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

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

  • 2016年03月18日 13:21
  • 64KB
  • 下载

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

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

trackbar和textbox背透明实现

  • 2015年11月10日 15:28
  • 181KB
  • 下载

asp.net(C#)中实现多个DropDownList及多个TextBox的多条件查询

这里是通过语句拼接来实现多条件查询的 主要代码: ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:实现了IPostBackEventHandler接口的TextBox
举报原因:
原因补充:

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