向数组中添加字符串值
本文关键字:字符串 添加 数组 | 更新日期: 2023-09-27 18:15:19
我有这段代码,这可能看起来像一个非常愚蠢的问题,但这是他们教我这样做的方式,它不适合我。
我希望它是,当我在txtEnterWord
文本框中输入文本时,它将被添加到数组words
中,并显示在列表框lstWords
中。
但是每次我去添加第二个单词时,它都会清除前一个单词并用新单词替换它。有人知道怎么解决这个问题吗?:)
private void btnEnter_Click(object sender, EventArgs e)
{
//string[] words = new string[6];
//words[6] = txtEnterWord.Text;
//for (int i = 0; i < words.Length; i++)
//{
// lstWords.Items.Add(words[i]);
//}
lstWords.Items.Clear();
string[] words = new string[6];
//words[0] = txtEnterWord.Text;
//words[1] = txtEnterWord.Text;
//words[2] = txtEnterWord.Text;
//words[3] = txtEnterWord.Text;
//words[4] = txtEnterWord.Text;
//words[5] = txtEnterWord.Text;
for (int i = 0; i < words.Length;i++)
{
//words[i] = txtEnterWord.Text;
lstWords.Items.Add(txtEnterWord.Text);
txtEnterWord.Clear();
//lstWords.ToString() = lstWords.ToString() + words[i].ToString();
}
应该是下面的代码。不需要for循环,也不应该清除lstWords。项,因为这就是您的数据消失的原因。只需将文本框添加到列表中,然后清除文本框。您也不需要字符串[]单词,因为它作为局部变量不做任何事情。如果您真的想将它添加到字符串[]中,那么它需要是此方法所在类的成员。我认为只要做lstWords.Items.Add应该是好的,如果这是你需要保存文本的地方。
private void btnEnter_Click(object sender, EventArgs e)
{
lstWords.Items.Add(txtEnterWord.Text);
txtEnterWord.Clear();
}
每次输入btnEnter_Click方法时都会清除数组,您应该将int声明为页面的变量,就像"全局"变量一样,并且在btnEnter_Click方法中您应该只添加新值。对不起,我的英语不好。
如果您试图不断地向列表中添加一个新项目,如果您想保持它们的视觉效果,则不应该清除lstWords.Items
。我建议您创建一个List<string> myWordsToDisplay = new List<string>()
全局,并在单击add按钮时向列表添加一个项目。
你应该有你的逻辑清除列表框上的事件"OnPaint"或"OnLoad"的应用程序,这取决于你有哪种类型的项目,像这样的
OnPaint(EventArgs e)
{
lstWords.Items.Clear();
lstWords.Items.AddRange(myWordsToDisplay); //if the AddRange method is not present is the same thing as this myWordsToDisplay.ForEach(x => lstWords.Items.Add(x)
}
明白了吗?
如果你想把每个项目都添加到列表框中,你不应该调用下面的方法。此函数将清除当前列表中的所有项,从而使列表显示为空。
lstWords.Items.Clear();
你应该直接从文本框(txtEnterWord)中添加文本到列表框项。
lstWords.Items.Add(txtEnterWord.Text);
如果您希望该值也存储在其他地方,则应该将该变量置于button click函数之外。如果您希望能够轻松地向数组中添加项,请考虑使用列表。更多信息可以在这里找到:https://msdn.microsoft.com/en-us/library/6sh2ey19(v=vs.110).aspx
完整的代码应该是这样的:
private List<string> words = new List<string>();
private void btnEnter_Click(object sender, EventArgs e)
{
words.Add(txtEnterWord.Text);
lstWords.Items.Add(txtEnterWord.Text);
txtEnterWord.Clear();
}
private void button1_Click(object sender, EventArgs e)
{
string words;
words = textBox1.Text;
listBox1.Items.Add(words);
textBox1.Clear();
}