我在WinForm中有一个绑定到SQL数据库表的dataGridView。我想每两秒左右刷新一次数据,但保留用户所做的任何行选择。因此,我在tick事件期间设置了一个计时器并实现了一些代码。代码可以正常刷新数据,但我很难让行选择继续存在。发生的事情是,当计时器再次进行滴答时,dataGridView中的所有行都会被选中,之后每个滴答都会被选中。我不确定是什么导致了这个,因为我的代码选择行是在foreach循环中,而if语句应该阻止这种情况发生。这是我的函数代码:
private void dataRefreshTimer_Tick(object sender, EventArgs e)
{
string selRows = null;
foreach (DataGridViewRow row in taskDataGrid.Rows)
{
if (row.Selected = true)
{
selRows += row.Cells[0].Value.ToString() + ",";
Console.WriteLine(selRows);
}
}
currenttasksTableAdapter.Fill(taskManagerDataSet.currenttasks);
currenttasksBindingSource.ResetBindings(false);
try
{
if (selRows != null)
{
foreach (DataGridViewRow row in taskDataGrid.Rows)
{
if (selRows.Contains(row.Cells[0].Value.ToString() + ","))
{
row.Selected = true;
}
}
}
} catch (Exception ex) { Console.WriteLine(ex); }
任何人都能告诉我我错过了什么导致所有行被选中?谢谢你的建议!
答案 0 :(得分:1)
任何人都可以告诉我,我所缺少的是导致所有行被选中吗?
if (row.Selected = true)
这里实际上是在选择每一行(=
是赋值运算符)。它应该是
if (row.Selected)
或
if (row.Selected == true)