将字符串值添加到数组

时间:2016-10-27 12:40:39

标签: c# arrays string visual-studio listbox

我有这段代码,这可能看起来像一个非常愚蠢的问题,但是我教他们这样做,而且对我来说这是不正常的。

我希望当我在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();
            }

5 个答案:

答案 0 :(得分:0)

每次输入btnEnter_Click方法时,您都要清除数组,您应该将int声明为页面的变量,例如&#34; global&#34;变量,在btnEnter_Click方法中,您应该只添加新值。 抱歉英文不好。

答案 1 :(得分:0)

它应该是下面的代码。不需要for循环,你不应该清除lstWords.Items,因为这就是你的数据消失的原因。只需将文本框文本添加到列表中,然后清除文本框。你也不需要字符串[]字,因为它没有作为局部变量做任何事情。如果你真的想把它添加到一个字符串[]那么它需要是这个方法所在的类的成员。我认为只是做lstWords.Items.Add应该是好的,但如果那是你需要文本的地方保存。

private void btnEnter_Click(object sender, EventArgs e)
{
    lstWords.Items.Add(txtEnterWord.Text);
    txtEnterWord.Clear();
}

答案 2 :(得分:0)

private void button1_Click(object sender, EventArgs e)
{
    string words;
    words = textBox1.Text;
    listBox1.Items.Add(words);
    textBox1.Clear();
}

答案 3 :(得分:0)

如果您尝试将新项目连续添加到列表中,则不应清除lstWords.Items是否要以可视方式保留它们。 我建议您创建一个List<string> myWordsToDisplay = new List<string>()全局,并在单击按钮添加时将项目添加到列表中。

你应该清楚你的应用程序事件“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)
}

得到了主意?

答案 4 :(得分:0)

如果您希望每个项目都添加到列表框中,则不应在下方调用该方法。此功能将清除列表中当前的所有项目,从而使其显示为空。

lstWords.Items.Clear();

相反,您应该只将文本框中的文本(txtEnterWord)添加到列表框项目中。

 lstWords.Items.Add(txtEnterWord.Text);

如果您希望将值也存储在其他位置,则应在按钮单击功能之外设置此变量。如果您希望能够轻松地将项目添加到阵列,请考虑使用列表。可以在此处找到更多信息: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();
}