【问题标题】:load selected .txt file from datagridview and open the file in listview c#从datagridview加载选定的.txt文件并在listview c#中打开文件
【发布时间】:2013-07-05 10:46:36
【问题描述】:

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

有人能帮我吗?

我猜是这样的:

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

听起来很简单,只是不确定如何编写代码。

谢谢

到目前为止我有这个但仍然无法工作:

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

标签: c# winforms listview datagridview


【解决方案1】:

您创建的路径似乎不正确,或者您读取的单元格值不正确。使用接受路径部分列表的重载Path.Combine。此外,您应该添加line,而不是添加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
}

【讨论】:

  • 感谢您的帮助,正打算尝试您的代码,但它在 foreach 循环中的“行”一词上出错,在当前上下文中不存在
  • @Andrew 我忘了指定类型,使用stringvar
  • 已添加,var 行;指定然后“in”突出显示哪些夹头错误“foreach 语句中都需要类型和标识符
  • 认为我明白了,但是当我运行代码时,它转到“如果文件不存在”并显示找不到路径
  • 现在完美运行!妈的,这么小的小错误!感谢您的帮助,标记正确
猜你喜欢
  • 2020-03-17
  • 2021-09-23
  • 1970-01-01
  • 1970-01-01
  • 2010-09-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多