我有一个 DataGridView dgv1
,我将一次填充 1 行。
每次创建行时,创建的行都将存储在列表或数组中。
private void dgvScanLogs_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
{
//List<string> sqlLog = dgvScanLogs.Rows[dgvScanLogs.Rows.Count - 1];
//List<string> LogList = dgvScanLogs.Rows
// .OfType<DataGridViewRow>()
// .Select(r => r.Cells[0].Value.ToString())
// .ToList();
}
但是,我有一些代码,似乎无法正确处理。
我所做的是将第一列放在列表中,但我需要最后一行。
如何将最后一行/新行存储到Array
或List
?
首先,在方法的作用域中声明的任何变量在执行后都会丢失,在你的程序中就是这种情况。
我假设,您想将每个添加的行都存储在Cell
值的前面。
将LogList
定义为类变量。
List<string> LogList = new List<string>();
RowsAdded
事件将针对添加的每个新行触发,因此您需要的是每次调用此事件时更新列表。
void dataGridView1_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
{
DataGridViewRow row = dataGridView1.Rows[e.RowIndex];
LogList.Add(row[0].ToString());
}
不太确定你想要什么。看起来您正在尝试将最后一行添加到本地定义的List
一旦您的RowsAdded
处理程序返回,该行就会超出范围,但无论如何:
List<string> sqlLog = new List<string>();
sqlLog.Add(dgvScanLogs.Rows[dgvScanLogs.Rows.Count - 1].ToString());
您需要先创建List
,然后才能添加到其中。DataGridViewRowCollection
上的Item[Int32]
方法不会返回列表,因此您需要将其添加到现有列表中。