删除c#中列表框中显示的文件?

时间:2015-02-15 09:56:53

标签: c# listboxitem

我有一个列表框,显示Windows中文件搜索的结果。

我希望能够做的是在项目突出显示时按删除键,并从系统中删除实际文件。

我使用Directory.Delete(obj.ToString())进行目录工作;但我不能让以下工作的文件,如果有人可以帮助它将不胜感激。按Del键后出现非法字符错误。

private void listBoxResults_KeyDown(object sender, KeyEventArgs e)
    {
        if (btnFilesClicked == true)
        {
            if (e.KeyCode == Keys.Delete)
            {
                List<int> sItems = new List<int>();
                foreach (var obj in listBoxResults.SelectedIndices)
                {
                    sItems.Add(Convert.ToInt32(obj));
                }
                foreach (var obj in listBoxResults.SelectedItems)
                {
                    try
                    {
                        File.Delete(obj.ToString());
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message);
                    }
                }
                foreach (int item in sItems.OrderByDescending(x => x))
                {
                    listBoxResults.Items.RemoveAt(item);
                }
            }
        }

1 个答案:

答案 0 :(得分:0)

首先ListBox.SelectedItems是IList的一个实例,它不是通用实现,所以它只给你对象实例......!

ListBox.SelectedItems

查看此msdn link

第二件事当你在obj上调用ToString()时,它的默认实现会返回你的类型名称。

这就是您的代码无法正常工作的原因。

try
{
    File.Delete(obj.ToString()); // this requires file name not the type name
}

您需要先了解如何获取fileName,然后才能调用Delete方法,如下所示。

try
{
    var fileName = GetFileName();
    File.Delete(fileName);
}