ASP.NET web窗体中如何给一个Label控件添加单击事件

如题所述

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.ComponentModel;

namespace CustomControls

{

    [DefaultProperty("Text")]

    [ToolboxData("<{0}:ClickLabel runat=server></{0}:ClickLabel>")]

    public class ClickLabel : WebControl, IPostBackEventHandler

    {

        [Bindable(true)]

        [Category("Appearance")]

        [DefaultValue("")]

        [Localizable(true)]

        public string Text

        {

            get

            {

                String s = (String)ViewState["Text"];

                return ((s == null) ? "[" + this.ID + "]" : s);

            }

            set

            {

                ViewState["Text"] = value;

            }

        }

        protected override void RenderContents(HtmlTextWriter output)

        {

           

            output.Write(Text);

          

        }

        public event EventHandler Click;

        public ClickLabel()

        {

        }

        protected void OnClick()

        {

            if (Click != null)

            {

                Click(this, new EventArgs());

            }

        }

        //When postback is caused by this control, raise the event

        void IPostBackEventHandler.RaisePostBackEvent(string eventArgument)

        {

            OnClick();

        }

        //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.ClientScript.GetPostBackEventReference(this, "OnClick"));

        }

    }

}

我帮你写个,将以上代码编译成一个.DLL文件,就有一个带有单击事件的Label控件了

编译方法:

打开studio 随便新建一个项目,注意是项目,就会自动生成一个Default.aspx,和Default.aspx.cs两个文件,将以上代码复盖Default.aspx.cs的代码,然后可以点击项目菜单栏属性,可以修改程序集名和命名空间的名字例如:之后点击生成下的生成选择就会在你的BIN文件里生成一个dll

将它复制到你项目文件里就可以引用了

<%@ Register Assembly="ClickLabel" Namespace="CustomControls" TagPrefix="fa" %>

调用控件

<fa:ClickLabel   Font-Size="15px" ID="ClickLabel5"  OnClick="label_Click" runat="server" Text="确 定" />

后台代码

  public void label_Click(object sender, EventArgs e)

    {

       

     }

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2018-03-02
分两种情况,调用JS方法,和调用后台方法
调用JS方法的如下
有两种方法:
一、在前台:<asp:Label runat="server" ID="Label1" Text="Label1" onclick="你的JS方法"></asp:Label>
二、在后台:Label1.Attributes.Add("onclick","你的JS方法");这个要加在Page_Load里哦
Label不能像按钮一样双击后有一个自己的单击方法,如果你是要单击Label后调用后台的方法你可以这样:
首先,你写一个后台的方法,这个方法一定要是public的,给你个例子吧!简单的:
后的方法:
public string showNum()
{
return "123";
}
JS方法:
function show()
{
alert('<%=showNum() %>')
}
然后给Label加个onclick事件就可以啦,这样<asp:Label ID="Label1" runat="server" Text="Label" onclick="show();"></asp:Label>本回答被网友采纳
第2个回答  推荐于2016-08-05
后台Page_Load里添加
lbT.Attributes.Add("onclick","display()");
前台
<script type="text/javascript">
function display() {
alert('你好,这是Label点击事件');
}
</script>
<asp:Label runat="server" ID="lbT" Text="Label点击事件"></asp:Label>本回答被提问者采纳
第3个回答  2011-10-10
如果你想给label添加事件,建议你用linkbutton只要用css去掉下划线就行。
第4个回答  2011-10-08
前端写js吧
onclick="javascript:alert(1)"; 测试下
相似回答