【问题标题】:How to focus a specific row in datagridview?如何在datagridview中聚焦特定行?
【发布时间】:2014-07-31 10:07:21
【问题描述】:

我有一个数据网格视图,它的内容从数据库绑定。有3列。姓名、地址、手机。我有一个用于过滤 datadridview 名称列的数据的文本框。如果我在文本框中写“Sa”,gridview 焦点将在 Sa.......除“Sa”外,所有数据都将显示在 datagridview 中,但集中在“Sa ...”上。我该怎么做?

【问题讨论】:

    标签: c# winforms datagridview


    【解决方案1】:

    你可以试试下面的代码..

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2011-06-22
        • 1970-01-01
        • 2018-04-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-22
        • 2022-10-15
        • 1970-01-01
        相关资源
        最近更新 更多