1

在我的应用程序中,它有两个名为 datagridview1 和 datagridview2 的 datagridviews,我在 datagridview1 中有 selectionChanged 事件,该事件捕获其中选择的数据,因此 datagridview2 的内容也会根据 datagridview1 中所选行的产品名称进行更改. 我不知道为什么我的索引超出范围,因为我已经检查过我在 datagridview1 中至少有 1 行和 2 列。我正在使用 DataView RowFilter 函数。

这是我的代码:

private void datagridview1_SelectionChanged(object sender, EventArgs e)
{
    view_1.RowFilter = "product_name = '" + datagridview1.SelectedRows[0].Cells[1].Value.ToString() +"'";
}
4

2 回答 2

3

当您取消选择行时,SelectionChanged 事件也应该触发,因此 SelectedRows 应该为空,因此您根本无法对其进行索引。

您应该首先检查它Length是否大于零,只有在大于零的情况下,才继续使用该函数。

此外,由于我看到您只处理一个选定的行,我建议您确保您不允许在DataGridView控件上进行多行选择(除非需要其他操作,例如删除或其他)。

于 2013-05-06T10:08:48.450 回答
0

就像 Yorye Nathan 所说的“你应该首先检查它的 Length 是否大于零,如果是,则继续使用该函数。”

private void datagridview1_SelectionChanged(object sender, EventArgs e)
        {
            if(dataGridView1.SelectedRows.Count > 0)
            {
               view_1.RowFilter = "product_name = '" + datagridview1.SelectedRows[0].Cells[1].Value.ToString() +"'";
            }

        }
于 2013-05-06T10:29:24.920 回答