注意:在将长不整洁的代码转换为伪代码时,我没有解释我想要返回一个包含已加载到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;
}
答案 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;
}
结果:
答案 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;
}