这里相当新的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)];
}
答案 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);
}