计算每次Button点击次数

时间:2012-10-04 05:39:46

标签: c# asp.net

任务是计算网络表单中的点击次数。

这是代码。

public partial class _default : System.Web.UI.Page
    {
        int count = 1;
        private void Page_Load(object sender, System.EventArgs e)
        {
            Button btn = new Button();
            btn.Text = "Click Me";
            btn.Click  += btn_Click;
            Label lbl = new Label();
            form1.Controls.Add(btn);
            form1.Controls.Add(lbl);


        }

        protected void btn_Click(object sender, EventArgs e)
        {
            count++;
            //Label1.Text = count.ToString();

        }
    }

问题是 btn_Click()中无法识别 lbl ...我无法理解......有人可以建议吗?

2 个答案:

答案 0 :(得分:4)

你需要在page_load方法之外声明lbl,而不是像你这样在按钮点击时使用它。

Label lbl ;
int count = 1;

private void Page_Load(object sender, System.EventArgs e)
{
    Button btn = new Button();
    btn.Text = "Click Me";
    btn.Click  += btn_Click;
    lbl = new Label();
    form1.Controls.Add(btn);
    form1.Controls.Add(lbl);
}

protected void btn_Click(object sender, EventArgs e)
{
    count++;
    if(lbl !=null)
      lbl.Text = count.ToString();            
}

因为如果在page_load中创建标签,变量的范围仅限于该方法。所以你要么像我一样在方法之外声明标签,要么你可以给标签id,而不是用FindControl方法搜索它。

答案 1 :(得分:1)

ASPX:

<form id="form1" runat="server">
    <div>
        <asp:Button ID="btn" runat="server" OnClick="btn_Click" Text="Button" />
        <asp:Label id="lbl" runat="server" />
    </div>
</form>

Code-Behind(C#):

int count = 1;

protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        lbl.Text = count.ToString();
    }
}

protected void btn_Click(object sender, EventArgs e)
{
    if (int.TryParse(lbl.Text, out count))
    {                
        lbl.Text = (++count).ToString();
    }
}