0

2 つの個別の ListView に存在するデータのコレクションをループするプログラム ロジックに問題があります。ループして ListView からデータを抽出した後、すべてをカンマ区切りのテキスト ファイル ( CLOSEULDCONFIG.TXT ) に追加します。

このロジックを初めて実行すると、すべてが正常に機能します。このロジックを再度実行すると、ListView にあるもののコピーが 2 つ取得されます。このロジックを実行するたびに、以前に追加された ListView アイテムのコピーの数が 1 ずつ増えます。

ListView にある要素と同じ数の要素をテキスト ファイルに追加したいので、これは望ましくありません。これを引き起こしているネストされた foreach ステートメントの何が問題なのか誰にもわかりますか?

                        // HAZMAT PACKAGE ERROR LISTVIEW ITEMS               
                        foreach (ListViewItem HazPackErrItems in HazmatPackageErrorListview.Items)
                        {
                            bool first = true;
                            foreach (ListViewItem.ListViewSubItem HazPackErrSub in HazPackErrItems.SubItems)
                            { 
                                // removes the first element of each comma delimited string
                                if (first)
                                    first = false;
                                else
                                    CloseULDSubmitLogDataResponseHazpackerrCloseULDConfig += " " + HazPackErrSub.Text + ",";
                            }
                        } 

                        // HAZMAT WEIGHT AND COUNT COLLECTED LISTVIEW ITEMS
                        foreach (ListViewItem HazWeightAndCountItems in HazmatWeightAndCountListview.Items)
                        {
                            bool first = true;
                            foreach (ListViewItem.ListViewSubItem HazWeightAndCountSub in HazWeightAndCountItems.SubItems)
                            {
                               // removes the first element of each comma delimited string
                                if (first)
                                    first = false;
                                else
                                    CloseULDSubmitLogDataResponseHazWeightAndCountCloseULDConfig += " " + HazWeightAndCountSub.Text + ",";
                            }
                        }

                        using (System.IO.StreamWriter sw = new System.IO.StreamWriter("CLOSEULDCONFIG.TXT", true))
                        {
                            if (!AlreadyExists)
                            {
                                sw.WriteLine(PresetNameConfig +
                                CloseULDSubmitLogDataRequestCloseULDConfig +
                                CloseULDSubmitLogDataResponseCloseULDConfig +
                                CloseULDSubmitLogDataResponseHazpackerrCloseULDConfig +
                                CloseULDSubmitLogDataResponseHazWeightAndCountCloseULDConfig +
                                CloseULDDateTimeConfig);
                            }
                        }
4

1 に答える 1

1

私が間違っていなければ、上書きするのではなく、追加するファイルを開いています。ファイル自体をチェックして、データがそこで複製されているかどうかを確認しましたか?

于 2009-03-13T16:10:20.893 に答える