我正在使用foreach循环检查来自datagridview的每一行中的数据,我想避开标题和空的buttom行,我该怎么做? 这是我的简单循环:
foreach (DataGridViewRow row in dataGridView1.Rows)
{
string datatocheck = row.Cells[2].Value.ToString();
if (datatocheck == "done")
{
row.Cells[2].Style.ForeColor = Color.Yellow;
}
}
答案 0 :(得分:1)
在for循环中使用迭代器,您可以轻松跳过第一行和最后一行:
for (int i = 1; i < dataGridView1.Rows.Count() - 1; i++)
{
string datatocheck = dataGridView1.Rows[i].Cells[2].Value.ToString();
if (datatocheck == "done")
{
dataGridView1.Rows[i].Cells[2].Style.ForeColor = Color.Yellow;
}
}
所以开始&#39;我&#39;在1而不是0跳过第一行,并确保&#39; i&#39;总是小于总行数减1会跳过最后一行。
答案 1 :(得分:0)
使用LINQ,你可以做下一步
var doneRows = dataGridView1.Rows
.Cast<DataGridViewRow>()
.Skip(1)
.Where(row => row.Cells[2].Value.ToString().Equals("done"));
foreach (var row in doneRows)
{
row.Cells[2].Style.ForeColor = Color.Yellow;
}
或者您似乎只使用DataGridViewCell
var doneCells = dataGridView1.Rows
.Cast<DataGridViewRow>()
.Skip(1)
.Select(row => row.Cells[2])
.Where(cell => cell.Value.ToString().Equals("done"));
foreach (var cell in doneCells)
{
cell.Style.ForeColor = Color.Yellow;
}