【问题标题】:How to save files from two listboxes c#如何从两个列表框保存文件c#
【发布时间】:2013-11-11 06:10:54
【问题描述】:

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

 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);
            }

它会出现一条错误消息:

你能帮帮我吗?

【问题讨论】:

  • 您确定要嵌套foreach 吗?
  • 如果您在每个框中有 2 个项目,那么在您的文本文件中您将有 8 行,我不确定这是您正在寻找的结果。是吗?

标签: c# text listbox save streamwriter


【解决方案1】:

据我了解,您的代码从for 循环中断。您能否像下面这样更改您的 sn-p。

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);
   }

【讨论】:

    【解决方案2】:

    您将 string 转换为 int 并且失败了

    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。然后你试图投射它并且它失败了。

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

    【讨论】:

      【解决方案3】:

      失败原因:
      1.您试图将返回的lbxItemPrices.Items 对象存储在int 变量中而不进行任何显式转换 - 这是无效的,如下所示:

      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());
                }
              }
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多