如何在运行时将dataGridView1与数组的内容一起加载

时间:2016-12-11 10:32:10

标签: c# arrays winforms visual-studio-2010 datagridview

注意:在将长不整洁的代码转换为伪代码时,我没有解释我想要返回一个包含已加载到arFiles中的数据的数组/列表。 这是什么线...... //查看每个文件的内容并将选定的信息存储在

表示。

我有一个简单的表单,带有一个按钮来加载文件目录  并在运行时扫描它们并使用所选数据加载数组。 如何使用数组的内容加载dataGridView1?

我在网上搜索过,找不到在运行时执行此操作的方法。 我看到的例子假设有人正在加载静态数据。

请对我温和,因为我已经编码了大约10年。

private void btnReadLogFiles_Click(object sender, EventArgs e)
{
    string[,] arFiles;
    arFiles = this.getFileInfo();
    // watch window shows arFiles is loaded correctly

    // how do I load a dataGridView1 with the data from the array at runtime?
}

private string[,] getFileInfo()
{
    string[] oFiles = Directory.GetFiles(sPath, "*.csv");
    nColumns = 4;
    nRows = Directory.GetFiles(sPath, "*.csv").Length;

    // create an array of rows that matches the files in the directory
    string[,] arFiles = new string[nRows, 4];

    // look at the contents of each file and store selected information in arFiles.

    return arFiles;
}

2 个答案:

答案 0 :(得分:0)

不幸的是,如果你只是将一个字符串数组分配到DataGridView,结果可能不是你期望的结果。因此,您可以通过将字符串数组转换为anonymous objects列表来解决此问题,然后将其分配给DataGridView

示例:

private void button1_Click(object sender, EventArgs e)
{
    this.dataGridView1.DataSource = GetFileInfo();
}

private List<object> GetFileInfo()
{
    string[] allPaths = Directory.GetFiles(@"C:\Program Files (x86)\Microsoft Visual Studio 10.0", "*.txt", SearchOption.AllDirectories);
    List<object> list = new List<object>();

    foreach (var path in allPaths)
    {
        // Create a new anonymous object
        list.Add(new { File = Path.GetFileName(path) });
    }

    return list;
}

结果:

enter image description here

答案 1 :(得分:0)

以下代码将文件放入4列

       private List<List<string>> getFileInfo()
        {
            List<List<string>> arFiles = new List<List<string>>();

            string[] oFiles = Directory.GetFiles(sPath, "*.csv");
            nColumns = 4;

            List<string> newRow = null;
            for(int index = 0; index < oFiles.Count(); index++)
            {
                if ((index % nColumns) == 0)
                {
                    newRow = new List<string>();
                    arFiles.Add(newRow);
                }
                newRow.Add(oFiles[index]);
            }

            return arFiles;
        }