0

所以基本上我有一个数据网格视图,它进入一个文件并将所有 .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"); }
4

1 回答 1

0

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

如果文件不存在并且尝试查找文件的路径,则以下代码将向您显示错误消息。如果网格单元格中没有文件名,它也会显示错误消息。

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
}
于 2013-07-05T11:01:53.250 回答