如何在按钮点击之间保留一个列表?

时间:2015-02-08 05:33:30

标签: c# list button click

因此,作为一个学习过程,我正在尝试做一些练习,我把自己放在一边,所以我试图让一个按钮给我一个随机值,我有的列表,但当他点击按钮再次,我想要另一个随机值,不包括它刚使用的那个。它应该工作正常,除了每次点击后列表似乎被“重写”,我认为这是因为代码是按钮点击事件,所以我有两个问题:我如何使这个工作原样(意思是我保持列表的位置,我只是使它不会被“重置”),我可以在哪里放置列表,以便它不会在每次按钮点击后“重置”,但与我能够在按钮点击事件中使用它。我试过把它放在其他地方,它只是说“当前语境中不存在名字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);

    }    

3 个答案:

答案 0 :(得分: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);

    }   
}

答案 1 :(得分:0)

您是否尝试在其他方法中声明Listvowelbutton_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);
}  

答案 2 :(得分: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;
            }
        }
    }