我使用以下代码在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的底部,则用户必须一直向下滚动到底部。我可以使用哪些代码跳转到我要查找的行?任何帮助将非常感谢!
答案 0 :(得分:4)
我发现我可以使用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;
}
答案 1 :(得分:1)
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];
}
visibleColumnIndex - 所选单元格必须可见