刚刚发布,需要澄清一个属性。 (注意我知道这个问题与其他问题类似,因此我尝试在其他地方寻找解决方案,但在这种情况下无法找到确切的问题。)
我对编程很陌生,不知道如何将DataGridView
滚动到用户选择的行。我尝试使用FirstDisplayedScrollingRowIndex
,但收到以下错误:
错误:无法将类型'System.Windows.Forms.DataGridViewRow'隐式转换为'int'
当我尝试将用户选择的行带到datagridview的顶部时会发生这种情况:
dataGridView1.FirstDisplayedScrollingRowIndex = dataGridView1.Rows[i]
以下是完整代码:
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();
}
}
答案 0 :(得分:2)
只需使用i
代替dataGridView1.Rows[i]
dataGridView1.FirstDisplayedScrollingRowIndex = i;
答案 1 :(得分:2)
根据文件,FirstDisplayedScrollingRowIndex:
获取或设置DataGridView上显示的第一行的行的索引。
您已将索引存储在i
中...尝试使用:
dataGridView1.FirstDisplayedScrollingRowIndex = i;
要在评论中解决您的第二个问题,以下是您如何找到第一个完全匹配(如果有):
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();
}