";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;
}

";NullReferenceException未处理“;将DataTable分配给DataGridView时

InializeComponent必须位于顶部。应该是这样的:

    public frmMain()
    {
        InitializeComponent();
        BindingSource bindingSource = new BindingSource();
        DataTable dt = Program.GetDataTableFromCSV("../../res/sampledata.csv");
        dgdMain.DataSource = dt;
    }

dgdMain为null,这就是它抛出NullReferenceException的原因。

您必须在调用InitializeComponent之后使用它。

另外,请查看此链接。什么是NullReferenceException,我该如何修复它?