数据网格视图 - 如何跳转到搜索中的选定行
本文关键字:搜索 何跳转 网格 数据网 视图 数据 | 更新日期: 2023-09-27 18:37:25
我使用以下代码在 DataGridView 中查找一行并突出显示该行。
private void btnSearch_Click(object sender, EventArgs e)
{
currentMode = ModeSelection.Search;
if (cmbSearchBy.SelectedIndex == Convert.ToInt16(SearchBy.MaterialID))
{
dgvSearchResults.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
int rowIndex = -1;
try
{
foreach (DataGridViewRow row in dgvSearchResults.Rows)
{
if (row.Cells[1].Value.ToString().Equals(materialLocation.MaterialID))
{
//Select the row here
rowIndex = row.Index;
dgvSearchResults.Rows[rowIndex].Selected = true;
break;
}
}
}
catch (Exception ex) { throw ex; }
}
它工作得很好。问题是我的 DataGridView 有超过 500 条记录,如果所选行靠近 DataGridView 的底部,用户必须一直向下滚动到底部。我可以使用哪个代码跳转到我要查找的行?任何帮助将不胜感激!
我发现我可以使用DataGridView.FirstDisplayedScrollingRowIndex
属性滚动到选定的行索引,并将其显示为 DataGridView 中的第一行。
这就是我在程序中的使用方式-
if (row.Cells[1].Value.ToString().Equals(materialLocation.MaterialID))
{
rowIndex = row.Index;
dgvSearchResults.ClearSelection();
dgvSearchResults.Rows[rowIndex].Selected = true;
dgvSearchResults.FirstDisplayedScrollingRowIndex = rowIndex;
dgvSearchResults.Focus();
break;
}
int rowIndex = -1;
foreach (DataGridViewRow row in dataGridView1.Rows)
{
if (row.Cells[0].Value.ToString().Equals(searchString))
{
rowIndex = row.Index;
break;
}
}
if (rowIndex >= 0)
{
dataGridView1.CurrentCell = dataGridView1[visibleColumnIndex, rowIndex];
}
可见列索引 - 所选单元格必须可见