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

stringaを anにキャストしていますが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すると、文字列が追加されます。あなたはそれをキャストしようとしていますが、失敗しています。

また、コードの構造を再検討することもできます。ネストされたループは決して良いことではなく、非常に非効率的です。

于 2013-11-11T06:24:25.903 に答える
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 に答える
0

失敗の理由:
1. の返されたオブジェクトを明示的なキャストなしlbxItemPrices.Itemsで変数に格納しようとしています。これは以下のように無効です:int

foreach (int item2 in lbxItemPrices.Items)

2. ここで 2 つの foreach ループを使用することはお勧めできません。別の問題が生じると思います。

ItemPriceここでは、 count とOverheadcount の両方が同じコードの場合にのみアイテムを追加して

います。コードは次のとおりです。

    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 に答える