C#在dataGridView刷新后保持行选择

时间:2016-06-08 06:11:20

标签: c# winforms datagridview

我在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); }

任何人都能告诉我我错过了什么导致所有行被选中?谢谢你的建议!

1 个答案:

答案 0 :(得分:1)

  

任何人都可以告诉我,我所缺少的是导致所有行被选中吗?

if (row.Selected = true)

这里实际上是在选择每一行(=是赋值运算符)。它应该是

if (row.Selected)

if (row.Selected == true)