2015-12-02 10 views
0

我很困惑如何在點擊一個按鈕時創建一個新的列表項,然後如何將列表項一次輸出到列表框中列表項目已創建。在點擊時創建一個新的int列表項,並輸出到組框中

我已經宣佈了名單,並把它命名爲全球硬幣:

List<int> coin = new List<int>(); 

然後在一個點擊按鈕命名爲「輸入」我想一個新的項目添加到列表中,這將決定價值通過對循環列表項,那麼該值必須大於項目的列表中當前的量高的:

private void btnEnter_Click(object sender, EventArgs e) 
    { 
     for (int i = 0; i > coin.Count(); i++) 
     { 
      coin.Add(i); 
     } 
    } 

然後在列表框中我通過轉換他們試圖輸出的所有列表項到一個字符串,然後計算for循環內的值的數量,如下所示:

private void groupBox1_Enter(object sender, EventArgs e) 
    { 
     for (int i = 0; i < coin.Count(); i++) 
     { 
      string spacesOutput = coin.ToString(); 
      groupBox1.Text = "/" + spacesOutput; 
     } 
    } 

點擊輸入按鈕什麼都沒有發生,沒有什麼會顯示在列表框中,所以我有點困惑。謝謝。

+2

您的循環將永遠不會打電話給你添加的代碼,最初,'coin.Count ();'將具有值0.嘗試修改for循環邏輯,以便即使Count爲0,也會調用Add。 另外,在你的groupbox中,'coin.ToString();'是指List本身,而不是個人的'硬幣'。你想用你的for循環的'i'來選擇元素,即'coin [i] .ToString();' – plusheen

+0

@plusheen這應該是一個答案:) – levelonehuman

+0

啊哎呀。我會修改併發布答案。 – plusheen

回答

0

你的第一個for循環可以去2種方式:
它要麼什麼也不做(比如現在),因爲i將在0開始,只是如coin.Count
另一種選擇是無限循環。爲此,您必須從1開始計數:for (i = 1...。你也不會有什麼好處。
我也想你希望你的分組框的文本是這個樣子:

/1/2/3/4/5... 

,你不會用你的代碼完成。您將列表本身轉換爲字符串。
有格式上面看到的,我建議StringBuilder對象:

StringBuilder builder = new StringBuilder(); 
for (int i = 0; i < coin.Count(); i++) 
{ 
    builder.Append("/"); 
    builder.Append(coin[i].ToString()); 
} 
groupBox1.Text = builder.ToString(); 
+0

這對我來說非常合適,謝謝你的建議! – Cube3

0

您的for循環條件將始終設置爲false。當你點擊回車,coin.Count();是0,我是0.因此coin.Add()永遠不會被調用,並且什麼都不會發生。修改您的for循環,這樣Add();被調用,例如

for (int i = 0; i <= coin.Count(); i++) coin.Add(i);

這樣一來,如果沒有硬幣的集合中,for循環將仍然運行一次。

另外,在您的羣組框中,coin.ToString();指的是List本身,而不是個人的「硬幣」。你想用你的我的環路SELCT元素,即string spacesOutput = coin[i].ToString();

0

我的理解是,你要一個硬幣添加到列表中,其價值是在列表中比項目數多一個。如果是這樣,你需要以下條件:

List<int> coin = new List<int>(); 

private void groupBox1_Enter(object sender, EventArgs e) 
{ 
    coin.Add(coin.Count + 1); 
} 

然後,硬幣的輸出值...

private void groupBox1_Enter(object sender, EventArgs e) 
{ 
    for (int i = 0; i < coin.Count(); i++) 
    { 
     string spacesOutput = coin[i].ToString(); 
     groupBox1.Text += "/" + spacesOutput; 
    } 
} 
+0

除非你使用非常小的列表,否則我會建議使用stringbuilder,就像Wilsu的答案一樣。 – webdevduck

相關問題