澄清如何使用FirstDisplayedScrollingRowIndex

时间:2013-12-03 16:43:43

标签: c# winforms datagridview

刚刚发布,需要澄清一个属性。 (注意我知道这个问题与其他问题类似,因此我尝试在其他地方寻找解决方案,但在这种情况下无法找到确切的问题。)

我对编程很陌生,不知道如何将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();
    }
}

2 个答案:

答案 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();
}