使用 foreach 将多个元素添加到 list<string>

问题描述

对于学校作业,我必须将多个 textBox.texts 添加到我的列表 (List<string> snackList = new List<string>();)。每次用户单击保存按钮并选择 MessageBoxResult.yes 时,它都会向列表中添加一个元素。问题是当用户按下 no 时,它会在列表框中显示列表,但只会显示最后提交的文本。

到目前为止,我假设我必须使用 foreach 循环,但我可能是错的。我一直在尝试在线搜索解决方案,但遗憾的是没有任何帮助。

我的代码

private void btnSave_Click(object sender,RoutedEventArgs e)
        {
           MessageBoxResult bevestig = MessageBox.Show("Would you like to order another snack?","Question",MessageBoxButton.YesNo);
           List<string> snackList = new List<string>();
           snackList.Add(tbOrder.Text);

           if (bevestig == MessageBoxResult.Yes)
           {
             tbOrder.Text = "";
             tbOrder.Focusable = true;
             tbOrder.Focus();
            }
           else
           {
             lbOrderlist.ItemsSource = snackList;    
           }  
        }

解决方法

有充分的理由以“错别字”结束这个问题,这就是为什么这篇文章是社区维基。


您的列表变量在您的方法范围内声明。这意味着一旦代码执行离开作用域(方法),变量就会被擦除。这也意味着每次调用该方法时,都会创建一个新列表。

走这条线:

List<string> snackList = new List<string>();

然后将它移到你的方法之外,并移到类的范围内。