获取 DataGridView 的最后一行并将其存储到列表或数组中



我有一个 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();
    }

但是,我有一些代码,似乎无法正确处理。
我所做的是将第一列放在列表中,但我需要最后一行。

如何将最后一行/新行存储到ArrayList

首先,在方法的作用域中声明的任何变量在执行后都会丢失,在你的程序中就是这种情况。

我假设,您想将每个添加的存储在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]方法不会返回列表,因此您需要将其添加到现有列表中。

最新更新