我有一个列表框,显示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);
}
}
}
答案 0 :(得分:0)
首先ListBox.SelectedItems
是IList的一个实例,它不是通用实现,所以它只给你对象实例......!
为ListBox.SelectedItems
第二件事当你在obj上调用ToString()时,它的默认实现会返回你的类型名称。
这就是您的代码无法正常工作的原因。
try
{
File.Delete(obj.ToString()); // this requires file name not the type name
}
您需要先了解如何获取fileName,然后才能调用Delete
方法,如下所示。
try
{
var fileName = GetFileName();
File.Delete(fileName);
}