0

我正在做一个项目。在项目中,我需要将值添加到列表框中。当我按下添加按钮时:

 lbxOverhead.Items.Add(tbxAddItem.Text);
 lbxItemPrices.Items.Add(tbxAddPrice.Text);

然后我使用以下代码将修改后的列表框值保存到 txt 文件中:

using (StreamWriter outputFile = new StreamWriter("List.txt"))
        {
            foreach (string item in lbxOverhead.Items)
            foreach (int item2 in lbxItemPrices.Items)
            {
                outputFile.WriteLine(item);
                outputFile.WriteLine(item2);
            }

它出现了一条错误消息:错误信息

你能帮我么?

4

3 回答 3

1

根据我的理解,您的代码从for循环中中断。您能否像下面这样更改您的代码段。

using (StreamWriter outputFile = new StreamWriter("List.txt"))
{
   foreach (var item in lbxOverhead.Items)
   foreach (var item2 in lbxItemPrices.Items)
   {
      outputFile.WriteLine(item);
      outputFile.WriteLine(item2);
   }
于 2013-11-11T06:21:17.633 回答
1

您正在将 a 投射string到 anint并且失败了

using (StreamWriter outputFile = new StreamWriter("List.txt"))
{
 foreach (string item in lbxOverhead.Items)
 foreach (string item2 in lbxItemPrices.Items)
 {
   outputFile.WriteLine(item);
   outputFile.WriteLine(item2);
 }

当您将其添加到项目列表中时,您添加.Text的是字符串。然后你试图投射它并且它失败了。

此外,您可能需要重新考虑代码的结构。嵌套循环几乎不是一件好事,而且效率很低。

于 2013-11-11T06:24:25.903 回答
0

失败原因:
1.您试图在没有任何显式转换的情况下存储返回的变量 in 对象 - 这是无效的,如下所示lbxItemPrices.Itemsint

foreach (int item2 in lbxItemPrices.Items)

2.在这里使用 2 个 foreach 循环不是一个好习惯,我认为它会产生其他问题。

ItemPrice仅当计数和Overhead计数相同时,我才添加项目

代码如下:

    using (StreamWriter outputFile = new StreamWriter("List.txt"))
    {
        if(lbxOverhead.Items.Count == lbxItemPrices.Items.Count)
        {
          for(int i=0;i<lbxOverhead.Items.Count;i++)       
          {         
            outputFile.WriteLine(lbxOverhead.Items[i].ToString());
            outputFile.WriteLine(lbxItemPrices.Items[i].ToString());
          }
        }
    }
于 2013-11-11T07:00:46.367 回答