我使用datagridview有以下代码,你只能选择一整行: “Variable.addModArray [i]”是一个字符串[];
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++;
}
当我运行代码时,我得到“对象引用未设置为对象的实例”。错误,但我已告诉计算机如果值不为空则执行代码!我做错了吗?
告诉我是否需要在此问题中添加任何内容。
答案 0 :(得分: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++;
}
答案 1 :(得分:0)
也可能是Variables
或addModArray
为空。
答案 2 :(得分:-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++;
}
}