问题描述
对于学校作业,我必须将多个 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>();
然后将它移到你的方法之外,并移到类的范围内。