2015-02-08 39 views
1

所以作爲一個學習過程,我試圖做一些練習,我把自己放到了一邊,所以我試圖讓一個按鈕給我一個我有的列表之間的隨機值,但是當他再次點擊按鈕時我想要另一個隨機值排除它剛剛使用的一個。它應該工作正常,除了列表似乎是每次點擊後「重寫」,我認爲這是因爲代碼是按鈕點擊事件發生,所以我有2個問題:我如何使這項工作,因爲它是(意思我保留它的名單,我只是做它,所以它不會得到「重置」),我在哪裏可以把列表,而不是每個按鈕點擊後「重置」,但與我能夠在按鈕點擊事件中使用它。我試圖把它放在其他地方,它只是說「名稱vowelz不存在於當前的情況下」。如何保存按鈕點擊之間的列表?

public void vowelbutton_Click(object sender, EventArgs e) 
    { 
     Random randomizer = new Random(); 

     List<Keys> vowelz = new List<Keys>(); 
     vowelz.Add(Keys.A); 
     vowelz.Add(Keys.A); 
     vowelz.Add(Keys.A); 
     vowelz.Add(Keys.B); 

     var indexz1 = randomizer.Next(0, vowelz.Count); 
     var keyz1 = vowelz[indexz1]; 
     listBox1.Items.Add(vowelz[indexz1]); 
     vowelz.RemoveAt(indexz1); 

    }  
+0

這是Windows窗體或Web窗體,還是什麼? – 2015-02-08 05:39:12

回答

0

你嘗試在另一個方法聲明List?這是不能通過vowelbutton_Click方法訪問。這應該工作。

List<Keys> vowelz = new List<Keys> 
{ 
    Keys.A, Keys.B, Keys.B, Keys.B 
} 

public void vowelbutton_Click(object sender, EventArgs e) 
{ 
    Random randomizer = new Random(); 

    var indexz1 = randomizer.Next(0, vowelz.Count); 
    var keyz1 = vowelz[indexz1]; 
    listBox1.Items.Add(vowelz[indexz1]); 
    vowelz.RemoveAt(indexz1); 
} 
+0

這就是我想要的,非常感謝你,我不知道我不得不聲明它是一種像其他方法那樣工作的方法:) – 2015-02-08 07:49:25

0

我想你想這樣的事情...

public class MyClass 
{ 
    protected List<Keys> vowelz = new List<Keys>(); 

    public void vowelbutton_Click(object sender, EventArgs e) 
    { 
     Random randomizer = new Random(); 

     vowelz.Add(Keys.A); 
     vowelz.Add(Keys.A); 
     vowelz.Add(Keys.A); 
     vowelz.Add(Keys.B); 

     var indexz1 = randomizer.Next(0, vowelz.Count); 
     var keyz1 = vowelz[indexz1]; 
     listBox1.Items.Add(vowelz[indexz1]); 
     vowelz.RemoveAt(indexz1); 

    } 
} 
0

玩這個例子反覆擊打按鈕...

private List<Keys> tmpVowelz = null; 
    private Random randomizer = new Random(); 
    private List<Keys> vowelz = new List<Keys>() { 
     Keys.A, 
     Keys.A, 
     Keys.B, 
     Keys.B 
    }; 

    public void vowelbutton_Click(object sender, EventArgs e) 
    { 
     if (tmpVowelz == null) 
     { 
      listBox1.Items.Clear(); 
      tmpVowelz = new List<Keys>(vowelz); 
     } 
     if (tmpVowelz.Count > 0) 
     { 
      int index = randomizer.Next(tmpVowelz.Count); 
      Keys key = tmpVowelz[index]; 
      listBox1.Items.Add(tmpVowelz[index]); 
      tmpVowelz.RemoveAt(index); 

      if (tmpVowelz.Count == 0) 
      { 
       tmpVowelz = null; 
      } 
     } 
    }