如何在datagridview中关注特定行?

时间:2014-07-31 10:07:21

标签: c# winforms datagridview

我有一个datagridview,其内容与数据库绑定。有3列。姓名,地址,手机。我有一个文本框,用于datadridview Name列的过滤数据。如果我写" Sa"在文本框中gridview焦点将在Sa .......除了" Sa"所有数据都将出现在datagridview中,但重点放在" Sa ..."。我怎么能这样做?

2 个答案:

答案 0 :(得分:0)

您可以尝试以下代码..

我们在这里做的是每当用户在文本框中键入内容时,我们遍历列索引(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;
      }
   }
}

答案 1 :(得分:0)

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

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将滚动网格以在网格显示区域的第一行显示该行。