asp.net服务器组件开发给System.Web.UI.WebControls.Label增加单击事件

来源:互联网 发布:linux双网卡配置路由 编辑:程序博客网 时间:2024/05/16 06:38

版权声明

请尊重原创作品。转载请保持文章完整性,并以超链接形式注明原始作者“tingsking18”和主站点地址,方便其他朋友提问和指正。

 

asp.net服务器组件开发给System.Web.UI.WebControls.Label增加单击事件

还有一个类是给Edit增加服务端可以相应的OnBlur事件

 

    public class ClickableLabel : Label, IPostBackEventHandler
    {
        public event EventHandler Click;

        protected void onClick(EventArgs e)
        {
            if (Click != null)
            {
                Click(this, e);
            }
        }

        //When postback is caused by this control, raise the event
        void IPostBackEventHandler.RaisePostBackEvent(string eventArgument)
        {
            onClick(new EventArgs());
        }

        //Add onclick attribute to cause a postback when Label is clicked
        protected override void AddAttributesToRender(HtmlTextWriter writer)
        {
            base.AddAttributesToRender(writer);
            writer.AddAttribute(HtmlTextWriterAttribute.Onclick, Page.GetPostBackEventReference(this, "onClick"));
        }
    }
    public class MyTextBox : TextBox, IPostBackEventHandler
    {
        public event EventHandler Blur;
        protected void OnBlur(EventArgs e)
        {
            if (Blur != null)
            {
                Blur(this, e);
            }
        }

        void IPostBackEventHandler.RaisePostBackEvent(string eventArgument)
        {
            postBackEvent(eventArgument);
        }

        private void postBackEvent(string argument)
        {
            switch (argument)
            {
                case "onblur":
                    OnBlur(new EventArgs());
                    break;
            }
        }

        protected override void AddAttributesToRender(System.Web.UI.HtmlTextWriter writer)
        {
            base.AddAttributesToRender(writer);
            writer.AddAttribute("onblur", Page.ClientScript.GetPostBackEventReference(this, "onblur"));
        }

    }