c# - 将文本加载到数据 GridView

标签 c# winforms datagridview

我有像这样的点文件:
Example point file

我已经创建了代码,允许用户从对话框中选择文件并将数据填充到 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 不显示该值。

Example output

最佳答案

如果您不是通过代码创建 DataGridView 列,则必须将 DataGridViewColumnDataPropertyName 设置为数据表

示例代码:

dataGridView1.AutoGenerateColumns = false;
DataGridViewTextBoxColumn col1 = new DataGridViewTextBoxColumn();
col1.Name = "Point";
col1.HeaderText = "Point";
col1.DataPropertyName = "Point";
dataGridView1.Columns.Add(col1)

另一种方法是将 AutoGenerateColumns 属性设置为 true 以自动创建所需的列并将数据绑定(bind)到 DataTable。这样您就不必像上面的示例代码那样通过代码创建列。

dataGridView1.AutoGenerateColumns = true;

关于c# - 将文本加载到数据 GridView ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22295063/

相关文章:

c# - Sitecore 单元测试是不是成功了?

c# - 在 C# MySQL 语句中使用 LEFT() 使用 OdbcDataAdapter 填充 DataTable 时出错

c# - 如何在C#中显示字符 "\0"

c# - LINQ to DataGridViewRowCollection

c# - 从 DataGridView 获取数据表

c# - 在我的 C# 代码中为 SqlCommand 替换 SqlDataAdapter

c# - NetworkChange.NetworkAddressChanged 事件停止工作

c# - 无法更改 winform 按钮的启用属性

c# - 为什么 DisplayMember 不适用于 ListBox 中手动添加的 DataRow?

Datagridview 单元格的 C# Switch-case 循环