C# 如何在按钮点击之间保存列表?

C# 如何在按钮点击之间保存列表?,c#,list,button,click,C#,List,Button,Click,作为一个学习过程,我试着做一些练习,所以我试着用一个按钮在我的列表中给我一个随机值,但是当他再次点击按钮时,我想要另一个随机值,不包括刚才使用的那个。它应该可以正常工作,除了列表在每次点击后都会被“重写”,我假设这是因为代码是按钮点击事件,所以我有两个问题:我如何使它保持原样(意思是我将列表保持在原来的位置,我只是使它不被“重置”),我可以将列表放在哪里,这样它就不会在每次点击按钮后被“重置”,但我可以在点击按钮事件中使用它。我试着把它放在其他地方,它只是说“元音Z这个名字在当前上下文中不存在”

作为一个学习过程,我试着做一些练习,所以我试着用一个按钮在我的列表中给我一个随机值,但是当他再次点击按钮时,我想要另一个随机值,不包括刚才使用的那个。它应该可以正常工作,除了列表在每次点击后都会被“重写”,我假设这是因为代码是按钮点击事件,所以我有两个问题:我如何使它保持原样(意思是我将列表保持在原来的位置,我只是使它不被“重置”),我可以将列表放在哪里,这样它就不会在每次点击按钮后被“重置”,但我可以在点击按钮事件中使用它。我试着把它放在其他地方,它只是说“元音Z这个名字在当前上下文中不存在”

public void元音按钮点击(对象发送者,事件参数e)
{
随机随机发生器=新随机();
List元音lz=新列表();
元音Z.Add(键A);
元音Z.Add(键A);
元音Z.Add(键A);
元音Z.Add(键B);
var indexz1=随机化器.Next(0,元音Z.Count);
var keyz1=元音Z[indexz1];
列表框1.Items.Add(元音Z[indexz1]);
元音z.RemoveAt(indexz1);
}    

我想你想要这样的东西

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);

    }   
}
公共类MyClass
{
受保护列表元音lz=新列表();
公共无效元音按钮单击(对象发送者,事件参数)
{
随机随机发生器=新随机();
元音Z.Add(键A);
元音Z.Add(键A);
元音Z.Add(键A);
元音Z.Add(键B);
var indexz1=随机化器.Next(0,元音Z.Count);
var keyz1=元音Z[indexz1];
列表框1.Items.Add(元音Z[indexz1]);
元音z.RemoveAt(indexz1);
}   
}

您是否尝试用另一种方法声明
列表
?无法通过
元音按钮单击
方法访问它。这应该行得通

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);
}  
List元音lz=新列表
{
钥匙。A,钥匙。B,钥匙。B,钥匙。B
}
公共无效元音按钮单击(对象发送者,事件参数)
{
随机随机发生器=新随机();
var indexz1=随机化器.Next(0,元音Z.Count);
var keyz1=元音Z[indexz1];
列表框1.Items.Add(元音Z[indexz1]);
元音z.RemoveAt(indexz1);
}  

反复点击按钮来播放此示例

    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;
            }
        }
    }  
私有列表tmpVowelz=null;
私有随机随机化器=新随机();
私有列表元音lz=新列表(){
钥匙A,
钥匙A,
B键,
钥匙B
};
公共无效元音按钮单击(对象发送者,事件参数)
{
if(tmpVowelz==null)
{
listBox1.Items.Clear();
tmpVowelz=新列表(元音);
}
如果(tmpVowelz.Count>0)
{
int index=randomizer.Next(tmpVowelz.Count);
Keys key=tmpVowelz[index];
listBox1.Items.Add(tmpVowelz[index]);
tmpVowelz.RemoveAt(索引);
如果(tmpVowelz.Count==0)
{
tmpVowelz=null;
}
}
}  

这是Windows窗体还是Web窗体,还是什么?这就是我想要的,非常感谢,我不知道我必须将其声明为这样的方法才能在其他方法中工作:)
    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;
            }
        }
    }