Just posted before and need clarification on a property. (Note I know this question is similar to others and hence I tried looking elsewhere for the solution but couldn't find the exact one for this situation).
I'm rather new to programming and don't know how to make a DataGridView
scroll to the row selected by a user. I tried using FirstDisplayedScrollingRowIndex
but am getting the following error:
Error: Cannot implicitly convert type 'System.Windows.Forms.DataGridViewRow' to 'int'
Which occurs when I try to bring the selected row by the user to the top of the datagridview:
dataGridView1.FirstDisplayedScrollingRowIndex = dataGridView1.Rows[i]
Here is the full code:
String searchVal = textBox1.Text;
for (int i = 0; i < dataGridView1.RowCount; i++)
{
if (dataGridView1.Rows[i].Cells[0].Value != null && dataGridView1.Rows[i].Cells[0].Value.ToString().Contains(searchVal))
{
dataGridView1.FirstDisplayedScrollingRowIndex = dataGridView1.Rows[i];
dataGridView1.Update();
}
}
According to the documentation, FirstDisplayedScrollingRowIndex:
Gets or sets the index of the row that is the first row displayed on the DataGridView.
You already have the index stored in i
... try just using that:
dataGridView1.FirstDisplayedScrollingRowIndex = i;
To address your second question in the comments, here's how you can find the first exact match (if any):
var selectedRow = dataGridView1.Rows.Cast<DataGridViewRow>()
.FirstOrDefault(x => Convert.ToString(x.Cells[0].Value) == searchVal);
if (selectedRow != null)
{
dataGridView1.FirstDisplayedScrollingRowIndex = dataGridView1.Rows[i];
dataGridView1.Update();
}
Just use i
instead of dataGridView1.Rows[i]
dataGridView1.FirstDisplayedScrollingRowIndex = i;
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With