我有一个gridview,我正在尝试使用网格视图中的列加载列表,并且我得到一个空引用异常
我试过这个
png = Image.fromarray(labelMap).convert('P')
png.putpalette(cmap)
png.save(pngPath, format='PNG')
我试过这个
public static List<string> LoadStringList()
{
List<string> stringList = new List<string>();
if (contactDataGridView.RowCount != 0)
{
for (int i = 0; i < contactDataGridView.Rows.Count; i++)
{
stringList.Add((string)contactDataGridView.Rows[i].Cells[2].Value);
}
}
return stringList;
}
进一步解释
我有两个表格frmMain和frmSub,其中gridview在frmMain中,而frmSub中的组合框我需要调用函数 public static List<string> LoadStringList()
{
List<string> stringList = new List<string>();
if (frmPRG299.mainForm.contactDataGridView.RowCount != 0)
{
for (int i = 0; i <frmPRG299.mainForm.contactDataGridView.Rows.Count; i++)
{
stringList.Add((string)frmPRG299.mainForm.contactDataGridView.Rows[i].Cells[2].Value);
}
}
return stringList;
}
来填充Combobox
答案 0 :(得分:0)
而不是使用 stringList.Add((字符串)contactDataGridView.Rows [I] .Cells [2]。价值); chaange代码 stringList.Add(contactDataGridView.Rows [i] .Cells [“你的栏目名称”]。值+“”);
答案 1 :(得分:0)
使用允许您引用对象的方法(在本例中为Control),并向该方法传递对该对象的引用。
如果没有硬编码的对象引用,您的方法会更灵活。
我在这里向方法传递DataGridView
控制参考和从中提取当前值的单元格数。
由于Cell.Value
可能是null
,因此您必须在尝试阅读和/或将其转换为所需类型之前对其进行验证。
List<string> MyList = LoadStringList(this.dataGridView1, 2);
public List<string> LoadStringList(DataGridView dgv, int cell)
{
if ((dgv == null) || (dgv.RowCount == 0)) return null;
List<string> result = dgv.Rows.Cast< DataGridViewRow>()
.Select(r => { return r.Cells[cell].Value != null
? r.Cells[cell].Value.ToString()
: default; })
.ToList();
return result;
}
如果需要更通用的输入类型:
try
{
List<int> MyList = LoadList<int>(this.dataGridView1, 2).ToList();
}
catch (Exception ex)
{
//Handle the exception/Update the UI/Prompt the User
Console.WriteLine(ex.Message);
}
public IEnumerable<T> LoadList<T>(DataGridView dgv, int cell)
{
if ((dgv == null) || (dgv.RowCount == 0)) return null;
IEnumerable<T> result = null;
try
{
result = dgv.Rows.Cast<DataGridViewRow>()
.Select(r => { return r.Cells[cell].Value != null
? (T)Convert.ChangeType(r.Cells[cell].Value, typeof(T))
: default;
})
.ToList();
}
catch (Exception ex) {
//Manage the exception as required
throw ex;
}
return result;
}
答案 2 :(得分:-1)
public List<string> LoadStringList(DataGridView contactDataGridView)
{
List<string> stringList = new List<string>();
if (contactDataGridView.RowCount != 0)
{
for (int i = 0; i < contactDataGridView.Rows.Count; i++)
{
var stringData = contactDataGridView.Rows[i].Cells[2].Value as string;
if(!string.IsNullOrEmpty(stringData))
{
stringList.Add(stringData);
}
}
}
return stringList;
}