簡體   English   中英

每次單擊按鈕時遞增數字

[英]Increment number every time button is click

每當我單擊按鈕時,我都想增加一個int變量i 但我得到的只是int1並且不再增加。

這是我的代碼:

private int i;

protected void btnStart_Click(object sender, EventArgs e)
{
    i++;

    lblStart.Text = i.ToString();
}

通過每個請求(單擊按鈕),將創建一個新實例。 所以你的非靜態變量將被重置為0

您可以將i定義為靜態:

private static int i;
protected void btnStart_Click(object sender, EventArgs e)
{
    i++;

    lblStart.Text = i.ToString();
}

但請注意i變量在所有用戶之間共享。 要改善此問題,您可以使用Session

Session是在會話中存儲每個用戶的數據的能力。

因此,您可以使用以下屬性來更改每個會話中的i變量:

private int i
{
    get
    {
        if (Session["i"] == null)
            return 0;

        return (int)Session["i"];

        // Instead of 3 lines in the above, you can use this one too as a short form.
        // return (int?) Session["i"] ?? 0;
    }
    set
    {
        Session["i"] = value;
    }
}

protected void btnStart_Click(object sender, EventArgs e)
{
    i++;

    lblStart.Text = i.ToString();
}

如您所知,其他答案是正確的,我想添加另一個答案

您必須在webform中將變量保存在ViewState

像這樣定義你的變量

public int i 
{
    get { Convert.ToInt32( ViewState["i"] ); }
    set { ViewState["i"] = value ; }
}

每次將 lblStart.Text 值轉換為 int 並將其分配給 i。 然后增加 i。

private int i;
protected void btnStart_Click(object sender, EventArgs e)
 {
    i =   Int32.Parse(lblStart.Text);
    i++; 
    lblStart.Text = i.ToString();
 }

我和你有類似的問題,我認為問題是因為事件點擊沒有存儲之前增加的值,因此下次點擊時它無法增加,所以這是我的代碼:

          protected void btn_add_Click(object sender, EventArgs e)
          {
            string initial;
            int increment;
            int quantity;

            initial = TextBoxQty.Text; 
            increment = Convert.ToInt16(initial);
            increment++;
            TextBoxQty.Text = increment.ToString();
            quantity = increment;
            }

您可以使用隱藏字段,將它們初始化為 0。

private int i;
protected void btnStart_Click(object sender, EventArgs e)
 {
    i =   int.Parse(myHiddenField.Value);
    i++; 
    myHiddenField.Value = i;
    lblStart.Text = i.ToString();
 }
protected static int a = 0;
    
protected void btnStart_Click(object sender, EventArgs e)
{
    a = a+1;
    lblStart.Text = i.ToString();
}

它對我有用,但在 page_load() 上它再次從 1 開始值!

這實際上是我第一次這樣做

        int i = 0;

        while (i>=0)
        {
            Console.WriteLine(i);
            Console.ReadLine();
            i++;
        }
    

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM