2017-04-02 47 views
-3

這讓我真的很驚訝。最簡單的事情之一不起作用,做一個櫃檯。我在c#中做了一個有點類似遊戲的應用程序,還有一個計時器。很簡單的權利?我知道如何編碼,這是我以前做過的,但我不明白爲什麼現在不工作。爲什麼我的櫃檯不算?

int i = 0; 
i++; 
label1.Text = i.ToString(); 

label1.Text變爲1並且沒有其他事情發生。也試過這個計時器,但它在1 freeeszes。我知道這篇文章是不是真的會幫助其他人,但它是非常令人沮喪。

+0

你想從它得到什麼,它的簡單工作'0 + 1 = 1',每次你進入它初始化i = 0並增加1。 –

+0

那是因爲每次你調用這段代碼,你把我設置爲0然後增加到1,第三行我的值將永遠是1. –

+0

這裏應該發生什麼?你聲明一個局部變量並將其初始化爲零,然後將它增加到1,然後將標籤的文本設置爲1.你可以調用這個代碼幾千次,但結果總是1.如果你想得到幫助需要更多的代碼和上下文。 – Steve

回答

2

爲什麼你總是在你的label1文本中獲得1?

的原因很簡單,每次你得到第一線的時候,我是0:

// Line 1 
int i = 0; // declaring and setting i to 0 
// Line 2 
i++;  // incrementing i to 1 
// Line 3 
label1.Text = i.ToString(); // displaying i (which is equal to 1) 

,然後再你得到的1號線和設置I = 0,等等。

我認爲你有一個UI應用程序(win表單,web表單等等) 你已經提到你有一個計時器,可以正常工作,並且可以輸出遞增的i變量。

正如已經評論才能看到你的標籤的改變,你可以使用一個循環如下:

int length = 100; // for example 
for (int i = 0; i < length; i++) 
{ 
    label1.Text = i.ToString(); 
} 

的label1的文本輸出爲0,然後1,然後2 ....和最後99. 很顯然,在運行時你將無法看到除最後一個99之外的所有這些值,但你可以調試並查看它是如何工作的。

我推測,你需要的是讓你的標籤文本在每次計時器打勾時改變。 繼代碼示例,你怎麼能實現它:

private int i = 0; // initialized once in this UI class 

private void timer1_Tick(object sender, EventArgs e) 
{ 
    label1.Text = i.ToString(); 
    i++; // will increment by one each time the timer is ticking 
} 

設置你的計時器的時間間隔爲1000〜所以你可以清楚地看到如何在運行時的文本標籤增量。

+0

嗯,我有點想通了,每當計時器滴答或一個按鈕被按下時,int都重置爲0,但我無法弄清楚如何避免這種情況。 – Emre

+0

太棒了!你在開發哪種UI應用程序? – ehh

+0

與冒險資本家類似的遊戲。 – Emre

1

如果你想增加它,你必須添加遞增邏輯就像一個循環forwhile循環:

如果你想使用定時器計數的東西,請參考這個問題:here