将文本框输入转换为数组

本文关键字:数组 转换 输入 文本 | 更新日期: 2023-09-27 18:01:30

c#新手。我正在尝试开发一个疯狂的lib生成器。我有一个按钮button_1标记为"动词",应该生成一个随机的动词。动词来自一个字符串数组,它是一个动词列表。我有另一个按钮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)];
}

将文本框输入转换为数组

你的动词添加程序有问题。

您已经设置了一个循环,该循环遍历谓词数组中的所有条目,并用谓词文本框的当前值替换每个条目。所以,当你点击按钮选择一个新动词时,你是从一个条目列表中随机选择一个动词,这个列表在你开始添加动词时总是相同的,而且所选择的动词总是你最后添加的。

我建议您看一下List,它可以更容易地增长并简化您的Add问题。可能的帮助!

// 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)];
 }
}

在c#中数组是固定长度的,因此,如果你的应用程序是基于能够动态地将谓词添加到公共谓词池的,你应该考虑更改

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

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

一个列表的大小可以增长,所以如果你已经有10个动词,想再添加一个,那么这将是没有问题的。button5_Click中所需的代码将简单地读为:

verbList.Add(txtaddverb.Text);

移动:

Random randomverb = new Random(); 

下面是我在解决所有bug问题后最终使用的代码:

名称空间WindowsFormsApplication1

{

public class Lists
{
    public static List<string> verbList = new List<string>();
    public static Random randomverb = new Random();
}

}

公共字符串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);
    }

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

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