[英]Increment number every time button is click
每當我單擊按鈕時,我都想增加一個int
變量i
。 但我得到的只是int
值1
並且不再增加。
這是我的代碼:
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.