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