";NullReferenceException未处理“;将DataTable分配给DataGridView时
本文关键字:分配 DataGridView DataTable quot NullReferenceException 未处理 | 更新日期: 2023-09-27 18:20:06
在包含dgdMain.DataSource = dt;
的行上,我收到一个"NullReferenceException was unhandled"错误。我试图找到一个解决方案,我相信它很简单,但我显然错过了。谢谢你的意见。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.OleDb;
using System.Diagnostics;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace Dashboard
{
public partial class frmMain : Form
{
public frmMain()
{
BindingSource bindingSource = new BindingSource();
DataTable dt = Program.GetDataTableFromCSV("../../res/sampledata.csv");
dgdMain.DataSource = dt;
InitializeComponent();
}
}
}
这里是GetDataTableFromCSV()
:
public static DataTable GetDataTableFromCSV(string path)
{
DataTable dataTable = new DataTable();
String[] values;
values = File.ReadAllLines(path);
string[] csvRows = System.IO.File.ReadAllLines(path);
string[] headers = csvRows[0].Split(',');
// Adding columns name
foreach (var item in headers)
dataTable.Columns.Add(new DataColumn(item));
string[] fields = null;
foreach (string csvRow in csvRows)
{
//Debug.Write(csvRow+"'r'n");
fields = csvRow.Split(',');
DataRow row = dataTable.NewRow();
row.ItemArray = fields;
dataTable.Rows.Add(row);
}
return dataTable;
}
InializeComponent必须位于顶部。应该是这样的:
public frmMain()
{
InitializeComponent();
BindingSource bindingSource = new BindingSource();
DataTable dt = Program.GetDataTableFromCSV("../../res/sampledata.csv");
dgdMain.DataSource = dt;
}
dgdMain为null,这就是它抛出NullReferenceException
的原因。
您必须在调用InitializeComponent
之后使用它。
另外,请查看此链接。什么是NullReferenceException,我该如何修复它?