C# 将文本加载到datagridview

C# 将文本加载到datagridview,c#,winforms,datagridview,C#,Winforms,Datagridview,我有如下点文件: 我创建了允许用户从对话框中选择文件的代码,它将数据填充到gridview中 private void cmdload_Click(object sender, EventArgs e) { DataTable table = new DataTable(); table.Columns.Add("Point"); table.Columns.Add("X"); table.Columns.Add("Y"); table.Columns.

我有如下点文件:

我创建了允许用户从对话框中选择文件的代码,它将数据填充到gridview中

private void cmdload_Click(object sender, EventArgs e)
{
    DataTable table = new DataTable();
    table.Columns.Add("Point");
    table.Columns.Add("X");
    table.Columns.Add("Y");
    table.Columns.Add("Z");
    table.Columns.Add("R");
    table.Columns.Add("A");
    table.Columns.Add("B");
    table.Columns.Add("C");
    Stream myStream = null;
    OpenFileDialog openFileDialog1 = new OpenFileDialog();

    openFileDialog1.InitialDirectory = "C:\\"; 
    openFileDialog1.Filter = "Data Files (*.PNT)|*.PNT";
    openFileDialog1.FilterIndex = 2;
    openFileDialog1.RestoreDirectory = true;
    if (openFileDialog1.ShowDialog() == DialogResult.OK)
    {
        try
        {
            if ((myStream = openFileDialog1.OpenFile()) != null)
            {
                using (myStream)
                {
                    string filename = openFileDialog1.FileName;
                    using (var reader = File.OpenText(filename)) 
                    {
                        string line;
                        while ((line = reader.ReadLine()) != null)
                        {
                            string[] parts = line.Split(' ');
                            table.Rows.Add(parts[0], parts[1], parts[2], parts[3], parts[4], parts[5], parts[6], parts[7]);
                        }
                        dataGridView1.DataSource = table;
                    }
                }
            }
        }

        catch (Exception ex) // you need to add the catch block if yo are using try block
        {
            MessageBox.Show("Error: Could not read file from disk. Original error: " + ex.Message);
        }

    }
}  
此代码工作正常,但是datagridview不显示该值


如果不是通过代码创建
DataGridView
列,则必须将
DataGridView列的
DataPropertyName
设置为
DataTable
中的列ID

示例代码:

dataGridView1.AutoGenerateColumns = false;
DataGridViewTextBoxColumn col1 = new DataGridViewTextBoxColumn();
col1.Name = "Point";
col1.HeaderText = "Point";
col1.DataPropertyName = "Point";
dataGridView1.Columns.Add(col1)
另一种方法是将
AutoGenerateColumns
属性设置为true,以自动创建所需的列,并将数据绑定到
DataTable
。这样,您就不必像上面的示例代码那样通过代码创建列

dataGridView1.AutoGenerateColumns = true;

正在创建行和列,但您看不到值…对吗?是否通过代码创建datagridview行。@Junaith是的,默认情况下我在datagridview属性中创建了列。当我选择文件时,我可以看到行数随着点文件中的数据行数的增加而增加,只是gridview中没有显示值。谢谢你提供的信息。但既然我是新手,我就不能理解你的意思。你能再给我一点指导吗?@Ren-以上只是示例代码。在设计器中检查是否创建了与示例代码中类似的列。如果看到,则只需为该列设置
DataPropertyName
属性。如果没有,请检查是否将
AutoGenerateColumns
设置为false并将其更改为true。