如何聚焦datagridview中的特定行

本文关键字:datagridview 何聚焦 聚焦 | 更新日期: 2023-09-27 18:15:43

我有一个datagridview内容绑定从数据库。有3列。姓名、地址、手机。我有一个文本框的datadridviewname列的过滤数据。如果我在文本框中写入"Sa",gridview的焦点将在Sa....... .除"Sa"外,所有数据都将呈现在datagridview中,但重点放在"Sa…"上。我该怎么做呢?

如何聚焦datagridview中的特定行

您可以尝试下面的代码…

我们在这里做的是当用户在文本框中输入一些东西时,我们迭代遍历列索引(0)的每个单元格值,当找到匹配的值时,我们突出显示整个行。

private void textBox1_TextChanged(object sender, EventArgs e)
{
   //Use could set the SelectionMode within FormLoad as well.
   dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
   dataGridView1.ClearSelection();
   foreach (DataGridViewRow item in dataGridView1.Rows)
   {
      if (item.Cells[0].Value.ToString().Equals(textBox1.Text))
      {
          item.Selected = true;
      }
   }
}

试试这个,当在文本框中更改值时可能会更快。

int j=dgv.Rows.Count;
for (int i = 0; i < dgv.Rows.Count; i+= 2)
{
    if (dgv.Rows[i].Cells["MyField"].Value.ToString().Contains(txtSearch.Text))
    {
        dgv.CurrentCell = dgv.Rows[i].Cells["MyField"];
        dgv.FirstDisplayedScrollingRowIndex = i;
        break;
    }
    if (j > -1 && dgv.Rows[j].Cells["MyField"].Value.ToString().Contains(txtSearch.Text))
    {
        dgv.CurrentCell = dgv.Rows[j].Cells["MyField"];
        dgv.FirstDisplayedScrollingRowIndex = j;
        break;
    }
    j--;
}

FirstDisplayedScrollingRowIndex将滚动网格以在网格显示区域的第一行显示该行。