【问题标题】:Error when clicked on dataGridView单击 dataGridView 时出错
【发布时间】:2016-06-13 21:48:49
【问题描述】:

当我点击 dataGridView 时,它会抛出一个错误说 "在 mscorlib.dll 中发生了类型为 'System.ArgumentOutOfRangeException' 的未处理异常

附加信息:索引超出范围。必须是非负数且小于集合的大小。”

这是代码部分,我需要它在单击某行时将所有参数写入文本框,以便轻松更新

 private void dgvList_MouseClick(object sender, MouseEventArgs e)
        {
                tbName.Text = dgvList.SelectedRows[0].Cells[0].Value.ToString();
                tbSurname.Text = dgvList.SelectedRows[1].Cells[1].Value.ToString();
                tbMobile.Text = dgvList.SelectedRows[2].Cells[2].Value.ToString();
                tbEmail.Text = dgvList.SelectedRows[3].Cells[3].Value.ToString();
                cbCategory.Text = dgvList.SelectedRows[4].Cells[4].Value.ToString();
        }

【问题讨论】:

    标签: c#


    【解决方案1】:

    您收到该错误是因为您的 gridview 没有 5 行或 5 列。您的 gridview 有多少行/列?请记住,数组索引以0 开头。确保您正在访问的行号(或)列号确实存在。

    此外,您为什么要同时访问多行,如下所示。这没有任何意义,因为任何时候都只会选择 1 行。 ...对吗?

    dgvList.SelectedRows[0]
    dgvList.SelectedRows[1]
    

    应该是这样的

     private void dgvList_MouseClick(object sender, MouseEventArgs e)
            {
                    tbName.Text = dgvList.SelectedRows[0].Cells[0].Value.ToString();
                    tbSurname.Text = dgvList.SelectedRows[0].Cells[1].Value.ToString();
                    tbMobile.Text = dgvList.SelectedRows[0].Cells[2].Value.ToString();
                    tbEmail.Text = dgvList.SelectedRows[0].Cells[3].Value.ToString();
                    cbCategory.Text = dgvList.SelectedRows[0].Cells[4].Value.ToString();
            }
    

    感谢@stackuser83 指出这一点。

    【讨论】:

    • @stackuser83,是的,正确。编辑答案。谢谢指点。
    猜你喜欢
    • 2013-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-22
    相关资源
    最近更新 更多