C# 从datagridview加载选定的.txt文件,并在listview c中打开该文件#

C# 从datagridview加载选定的.txt文件,并在listview c中打开该文件#,c#,winforms,listview,datagridview,C#,Winforms,Listview,Datagridview,所以基本上我有一个数据网格视图,它进入一个文件并将所有的.txt文件名加载到一个数据网格视图中。我需要做的是,当我在数据网格视图中单击某个文件时,它会将该文件的内容打开到列表视图中 我被卡住了,有人能帮忙吗 我猜是这样的: 如果文件夹中的数据网格视图值=.txt文件,则将内容加载到listview中 听起来很简单,只是不知道如何编码 多谢各位 到目前为止,我已经做到了这一点,但仍然不起作用: private void gridProfiles_CellClick(object sender, D

所以基本上我有一个数据网格视图,它进入一个文件并将所有的.txt文件名加载到一个数据网格视图中。我需要做的是,当我在数据网格视图中单击某个文件时,它会将该文件的内容打开到列表视图中

我被卡住了,有人能帮忙吗

我猜是这样的:

如果文件夹中的数据网格视图值=.txt文件,则将内容加载到listview中

听起来很简单,只是不知道如何编码

多谢各位

到目前为止,我已经做到了这一点,但仍然不起作用:

private void gridProfiles_CellClick(object sender, DataGridViewCellEventArgs e)
{
    if (gridProfiles.Rows[e.RowIndex].Cells[0].Value != null)
    {
        var path = gridProfiles.Rows[e.RowIndex].Cells[0].Value.ToString();
        path = Path.Combine(rootDirectory + "\\Profiles\\", path);

        if (File.Exists(path))
        {
            String[] lines = File.ReadAllLines(path);
            foreach (var line in lines)
            {

                lstProcesses.Items.Add(path);
            }
        }

    }
}
当我运行这个程序时,它会得到ti if(file.exists)(path),然后跳过它

路由目录:

private static string rootDirectory = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\My File";


static void CreateDirectory()
    {
        string rootDirectory = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\My File";

        if (!Directory.Exists(rootDirectory)) { Directory.CreateDirectory(rootDirectory); }
        if (!Directory.Exists(rootDirectory + "\\Profiles")) { Directory.CreateDirectory(rootDirectory + "\\Profiles"); }

看起来您创建了不正确的路径,或者读取了不正确的单元格值。请使用重载的
path。组合接受路径部分列表的
。此外,您应该添加
行,而不是将
路径添加到列表中

如果文件不存在,下面的代码将向您显示错误消息,其中包含它试图查找文件的路径。如果网格单元中没有文件名,则还会显示错误消息

private void gridProfiles_CellClick(object sender, DataGridViewCellEventArgs e)
{
    object value = gridProfiles.Rows[e.RowIndex].Cells[0].Value;

    if (value == null)
    {
        MessageBox.Show("Cannot get file name from grid");
        return;
    }

    var file = value.ToString();
    var path = Path.Combine(rootDirectory, "Profiles", file); // create path

    if (!File.Exists(path))
    {
        MessageBox.Show(path + " not found");
        return;
    }

    foreach(string line in File.ReadLines(path))
        lstProcesses.Items.Add(line); // add line instead of path
}

调试通过,并检查路径的实际结果谢谢您的帮助,我们将尝试YY您的代码,但在foreach循环中“line”一词上出现的错误在当前代码中不存在context@Andrew我忘了指定类型,使用
string
var
添加,var行;然后指定“in”突出显示foreach语句中都需要的“chucks error”类型和标识符。我想我得到了它,但当我运行代码时,它转到“if file not existence”并显示路径未找到。现在可以完美地工作了!该死,这是一个小错误!感谢您的帮助,标记正确