澄清如何在数据网格视图中选择特定行

时间:2013-12-03 15:28:30

标签: c# winforms

使用c#,winforms

我希望用户在文本框中键入数字。如果数字包含在我的数据网格视图的第一列中,那么该行应该突出显示或弹出,或者数据网格视图向下滚动以便用户可以看到它(你们得到了我的意图)

我正在讨论如何实现这一点,我正在尝试一种特殊的技术但是我得到错误:“对象引用未设置为对象的实例。”表示变量searchVal在我的代码的if语句中:

 private void button3_Click_1(object sender, EventArgs e)
    {
        String searchVal = textBox1.Text;
        for (int i = 0; i < dataGridView1.RowCount; i++)
        {

                if (dataGridView1.Rows[i].Cells[0].Value.ToString().Contains(searchVal))
                {
                    // Also Is this how to make the row highlighted?
                    dataGridView1.Rows[i].Cells[0].Selected = true;
                }

        }
    }

2 个答案:

答案 0 :(得分:1)

你应该检查单元格的null值,考虑到你的行中至少有一个单元格,你应该检查:

 if (dataGridView1.Rows[i].Cells[0].Value != null &&
     dataGridView1.Rows[i].Cells[0].Value.ToString().Contains(searchVal))

您还可以添加检查以检查细胞计数,如:

 if (dataGridView1.Rows[i].Cells.Count > 0 &&
     dataGridView1.Rows[i].Cells[0].Value != null &&
     dataGridView1.Rows[i].Cells[0].Value.ToString().Contains(searchVal))

答案 1 :(得分:1)

检查dataGridView1中的“添加行”选项,因为它会导致n + 1项计数,当执行for时,n + 1为null,也可以完成上述所有操作。

重新考虑你需要改变的焦点

dataGridView1.Rows[i].Cells[0].Selected = true;

dataGridView1.Rows[i].Selected = true;
dataGridView1.CurrentCell = dataGridView1[0, i];
break;

因为你试图把这个行集中起来我猜

最好的问候