我有这段代码。
private void button2_Click(object sender, EventArgs e)
{
dataGridView1.AllowUserToAddRows = false;
int xy = dataGridView1.Rows.Count;
string[] Files = System.IO.Directory.GetFiles(@"f:\ecet\");
foreach (string sFile in Files)
{
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
string fileCont = System.IO.File.ReadAllText(sFile);
dataGridView1.Rows[i].Cells[1].Value = fileCont.ToString();
}
}
}
我有错。在“ecet”文件夹中,我有3个文件。 (所有.txt)
当我运行程序时,这只是将最后一个txt文件的内容放在所有三行datagrindview中。
我希望将第一个txt放到第一行,将第二个放到第二行,然后打开。
答案 0 :(得分:0)
你可以尝试这个:
// Declare an array, in which you will store the contents of your file.
string[] contents = new string[Files.Length];
// For each file in you Files collection read it's contents and add it to the contents array
for(int i=0; i<contents.Length; i++)
contents[i] = System.IO.File.ReadAllText(Files[i]);
// Set the datasource of your data grid view and databind it.
dataGridView1.DataSource = contents;
dataGridView1.dataBind();
答案 1 :(得分:0)
private void button2_Click(object sender, EventArgs e)
{
dataGridView1.AllowUserToAddRows = false;
string[] Files = System.IO.Directory.GetFiles(@"f:\ecet\");
DataTable table = new DataTable();
table.Columns.Add("Content".ToString());
foreach (string sFile in Files)
{
string fileCont = System.IO.File.ReadAllText(sFile);
DataRow dr = table.NewRow();
dr["Content"] = fileCont;
table.Rows.Add(dr);
}
dataGridView1.DataSource = table;
}
试试这个:)
使用您的代码覆盖每个新文件的所有单元格。
答案 2 :(得分:0)
这里你可以用Linq
来做var files = System.IO.Directory.GetFiles(@"f:\ecet\").Select(t => Sytem.IO.File.ReadAllText(t)).ToList();
dataGridView1.DataSource = files;