将文本框输入转换为数组
本文关键字:数组 转换 输入 文本 | 更新日期: 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);
}