1

我使用 datagridview 有以下代码,您只能选择一整行: "Variable.addModArray[i]" is a string[];

class Variables
{
    public static string[] addModArray;
}

int i = 0;
while (i < dgv.SelectedRows.Count)
{
    if (dgv.SelectedRows[0].Cells[i].Value != null)
        Variables.addModArray[i] = dgv.SelectedRows[0].Cells[i].Value.ToString(); //gets error
    i++;
}

当我运行代码时,我得到“对象引用未设置为对象的实例”。错误,但我已经告诉计算机如果值不为空,则执行代码!我做错什么了吗?

告诉我是否需要对此问题添加任何内容。

4

3 回答 3

1

首先,对于任何给定的组合a.b.c,检查a.b.c != null并不意味着a.b不能为空,或者a不能为空。

正如其他评论员所指出的,它也不会阻止其他变量为空。

其次,不清楚为什么您要i为每个选定的行增加但不使用除第一行之外的任何内容。

你说你只能选择一行,那为什么还要麻烦循环呢?

我希望:

int i = 0;
while (i < dgv.SelectedRows.Count)
{
    if (dgv.SelectedRows[0].Cells[i].Value != null)
        Variables.addModArray[i] = dgv.SelectedRows[0].Cells[i].Value.ToString(); //gets error
    i++;
}

成为:

int i = 0;
while (i < dgv.SelectedRows.Count)
{
    if (dgv.SelectedRows[i].Cells[0].Value != null)
        Variables.addModArray[i] = dgv.SelectedRows[i].Cells[0].Value.ToString(); //gets error
    i++;
}

或者:

int i = 0;
while (i < dgv.SelectedCells.Count)
{
    if (dgv.SelectedRows[0].Cells[i].Value != null)
        Variables.addModArray[i] = dgv.SelectedRows[0].Cells[i].Value.ToString(); //gets error
    i++;
}
于 2013-01-22T10:30:54.843 回答
0

它也可能是Variables或者addModArray是空的。

于 2013-01-22T10:55:08.100 回答
-2

尝试这个

   //please try this
    int i = 0;
    if(dgv.SelectedRows.Count > 0)
    {
        while (i < dgv.Columns.Count)
        {
            Variables.addModArray[i] = dgv.SelectedRows[0].Cells[i].FormattedValue; 
            i++;
        }
    }
于 2013-01-22T10:33:16.400 回答