将文本框输入转换为数组

时间:2013-02-27 16:47:34

标签: c# arrays winforms input

这里相当新的C#开发人员。我试图开发一个疯狂的lib生成器。我有一个标有"动词"的按钮button_1。应该生成一个随机动词。动词来自一个字符串数组,它是一个动词列表。我有一个标有&#34的另一个按钮button_5;添加新的动词"应该将相应文本框中的动词添加到动词数组中。我遇到的问题是,当我点击标有"动词"的button_1时,它只生成我输入的最后一个动词。

代码如下所示:

namespace WindowsFormsApplication1
{
    public class Arrays
    {
        public static string[] verbarray = new string[10];
    }
}

public void button5_Click(object sender, EventArgs e)
{
    for (int iverb = 0; iverb < Arrays.verbarray.Length; iverb++)
    {
        Arrays.verbarray[iverb] = Convert.ToString(this.txtaddverb.Text);
    }
}

public void button1_Click(object sender, EventArgs e)
{
    Random randomverb = new Random();
    verb.Text = Arrays.verbarray[randomverb.Next(0, Arrays.verbarray.Length)];
}

5 个答案:

答案 0 :(得分:2)

你的动词添加程序就是问题所在。

您已设置一个循环,该循环遍历动词数组中的所有条目,并使用动词文本框的当前值替换每个条目。因此,当您单击按钮选择新动词时,您将从一个条目列表中随机选择动词,这些条目在您开始添加动词后始终是相同的 - 并且所选动词将始终是最后一个动词加入。

我建议您查看一个列表,它可以更容易地增长并简化您的添加问题。可能会有帮助!

// a little pseudocode to help with the notion..wire in your 
// event handlers accordingly
class VerbManager
{

 List<String> verbs= new List<String>();
 Random picker = new Random();

 public void addVerb(String newVerb)
 {
     verbs.Add(newVerb);
 }

 public string pickRandomVerb()
 {
     return verbs[picker.Next(0,verbs.Count)];
 }
}

答案 1 :(得分:1)

在C#中数组具有固定长度,因此,如果您的应用程序基于能够动态地将动词添加到公共动词池中,则应考虑更改

public static string[] verbarray = new string[10];

public static List<string> verbList = new List<string>();

List可以增加大小,所以如果你已经有10个动词并且想要添加另一个那么那就没问题了。 button5_Click中所需的代码只需阅读:

verbList.Add(txtaddverb.Text);

答案 2 :(得分:0)

移动:

Random randomverb = new Random(); 

到班级。

答案 3 :(得分:0)

以下是我在解决所有错误问题后最终使用的代码:

命名空间WindowsFormsApplication1

{

public class Lists

{
    public static List<string> verbList = new List<string>();

    public static Random randomverb = new Random();
}

}

public string pickRandomVerb()

    {
        return Lists.verbList[Lists.randomverb.Next(0, Lists.verbList.Count)];
    }
    public void button1_Click(object sender, EventArgs e)
    {
        if (Lists.verbList.Count > 0) verb.Text = pickRandomVerb();
    }

public void button5_Click(object sender,EventArgs e)

    {
        Lists.verbList.Add(txtaddverb.Text);
    }

答案 4 :(得分:-2)

你应该在这里纠正你的逻辑:

   public void button5_Click(object sender7, EventArgs e)
    {
        for (int iverb = 0; iverb < Arrays.verbarray.Length; iverb++)
        {
            Arrays.verbarray[iverb] = Convert.ToString(this.txtaddverb.Text);
        }
    }

到你想要的东西

public void button5_Click(object sender7, EventArgs e)
        {
            // suppose index 6
                Arrays.verbarray[6] = Convert.ToString(this.txtaddverb.Text);

        }