У меня есть приложение, которое создает строковый массив из некоторых значений, собранных по сети CAN. Я добавляю массив строк в просмотр списка, а затем добавляю его в свойство списка, которое отправляется методу для копирования списка в файл Excel.
Я добавляю массив в просмотр списка, используя это:
ListViewItem item = new ListViewItem(UnitsCheckedArray);
DCSDlv.Items.Add(item);
Сразу после этого я добавляю тот же массив в список строк [], используя это:
UnitsChecked.Add(UnitsCheckedArray);
Это результат добавления строкового массива в представление списка
Я записываю данные в список UnitsChecked, вызывая метод write to excel:
public void WriteToExcel(List<String[]> list)
{
int Row = GetFirstEmptyRow();
int Column = 1;
foreach(var item in list)
{
Column = 1;
foreach(var subItem in item)
{
excelWS.Cells[Row, Column] = subItem;
Column++;
}
Row++;
}
Ниже приведено то, что распечатывается в файле Excel. Как видно, данные не совпадают с тем, что есть в списке.
Я в недоумении, почему данные меняются в списке. Единственное время, когда данные записываются в список UnitsChecked, - это код, указанный выше. Нет другого кода, который касается этого списка. Кроме того, данные записываются в просмотр списка и в список одновременно, поэтому одни и те же данные должны быть в обоих.
Это то место, где список затрагивается в моем коде:
ДОБАВЛЕННЫЕ ДАННЫЕ Код запущен на BGWorker завершен. Именно здесь данные отправляются в просмотр списка и список, используемый для создания данных Excel.
private void bg1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
ListViewItem item = new ListViewItem(UnitsCheckedArray);
DCSDlv.Items.Add(item);
DCSDlv.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent);
UnitsChecked.Add(UnitsCheckedArray);
UpdateStatusMessage("Record Added Successfully");
btStartTest.Enabled = true;
GenReportButton.Enabled = true;
}