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

时间:2013-07-05 10:46:37

标签: c# winforms listview datagridview

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

1 个答案:

答案 0 :(得分: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
}