c# ListView - 在实现 MouseDoubleClick() 方法时得到“路径不是合法形式”

本文关键字:路径 实现 ListView MouseDoubleClick 方法 | 更新日期: 2023-09-27 18:33:23

我对C#很陌生。我正在使用 C# 填充文件资源管理器。我现在要做的是实现 listView1_MouseDoubleClick() 方法,以便当我双击子文件夹时,当前 listView 将被清除,然后它将显示该子文件夹中的文件和文件夹(就像 Windows 资源管理器所做的那样)。这是我的代码:

private void listView1_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            for (int i = 0; i < listView1.Items.Count; i++)
            {
                if (listView1.Items[i].Selected == true)
                {
                    string path = listView1.Items[i].Name;
                    comboBox1.Text = path;
                    listView1.Items.Clear();
                    LoadFilesAndDir(path);
                }
            }
        }
    private void LoadFilesAndDir(string address)
    {
        DirectoryInfo di = new DirectoryInfo(address);
        try
        {
            foreach (FileInfo fi in di.GetFiles())
            {
                listView1.Items.Add(fi.Name);
            }
            try
            {
                foreach (DirectoryInfo listd in di.GetDirectories())
                {
                    listView1.Items.Add(listd.FullName, listd.Name, 0);
                }
            }
            catch (Exception e1)
            {
            }
        }
        catch (Exception e1)
        {
        }
    }

但它未能运行。当我逐步调试此错误时,我发现在此语句之后:path = listView1.Items[i].Name; path变量的值为 "" 。所以我想这是让错误的原因。但我不知道如何解决这个问题...你们能帮我这个吗?非常感谢提前!

c# ListView - 在实现 MouseDoubleClick() 方法时得到“路径不是合法形式”

确保首先声明字符串"path"

string path = "";

然后插入以下代码:

private void listView1_MouseDoubleClick(object sender, EventArgs e)
    {
        for (int i = 0; i < listView1.Items.Count; i++)
        {
            if (listView1.Items[i].Selected == true)
            {
                path = Convert.ToString(listView1.Items[i]);
                // This replaces the part "List View Item: {"
                path = path.Replace("ListViewItem: {", "");
                // This replaces the part "}"
                path = path.Replace("}", "");
                comboBox1.Text = path;
                listView1.Items.Clear();
                LoadFilesAndDir(path);
            }
        }
    }

代码有点长,但它有效!