0

我对 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值是"". 所以我猜这是导致错误的原因。但我不知道如何解决这个问题......你们能帮我解决这个问题吗?非常感谢先进!

4

1 回答 1

0

确保首先声明字符串“路径”

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);
            }
        }
    }

代码有点长,但是可以!

于 2013-09-30T16:22:20.213 回答