在c#

时间:2016-10-31 11:17:37

标签: c# winforms

我正在创建一个Windows窗体应用程序,我希望能够在按下按钮的列表中显示带有随机变量的消息框。我创建了一个名为SetRandomCode的类来设置列表,希望为变量' testVariable设置一个随机数。'我对c#相当陌生,所以我可能会以完全错误的方式解决这个问题,但这是我的代码:

SetRandomCode.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace WindowsFormsApplication2
{
    public class SetRandomCode
    {
        List<string> randomCodes = new List<string>();

        public void setCode()
        {
            Random r = new Random();
            int index = r.Next(randomCodes.Count);
            string testVariable = randomCodes[index];
            randomCodes.Add("Test");
            randomCodes.Add("Test 2");
            randomCodes.Add("Test 3");
        }
    }
}

Form1.cs的

namespace WindowsFormsApplication2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            MessageBox.Show(testVariable);
        }
    }
}

我得到的错误是&#39; testVariable&#39;在当前背景下不存在。

对此的任何帮助将不胜感激:)

1 个答案:

答案 0 :(得分:3)

尝试在SetRandomCode中创建类

public static class SetRandomCode
{

    public static string setCode()
    {
        List<string> randomCodes = new List<string>();
        randomCodes.Add("Test");
        randomCodes.Add("Test 2");
        randomCodes.Add("Test 3");
        Random r = new Random();
        int index = r.Next(0, randomCodes.Count);
        return randomCodes[index];
    }
}

然后在form1

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        string testVariable = SetRandomCode.setCode();
        MessageBox.Show(testVariable);
    }
}

代码中的一些其他差异是在计算列表之前填充列表,否则返回的值将始终为0,在从中获取值之前也会填充列表以避免错误。

在这个新代码中,测试变量是在Form1中设置的,而不是在完全独立的类中。通过静态,类可以调用它的方法而不进行实例化,允许最接近你之前尝试的方法