从列表框和文件夹中删除选定的文件
Delete Selected File from Listbox and Folder
我想从列表框和文件夹中删除选定的文件。现在它只是将其从列表框中删除。现在我希望它也从文件夹中删除。谢谢
private void tDeletebtn_Click(object sender, EventArgs e)
{
if (listBox1.SelectedIndex != -1)
listBox1.Items.RemoveAt(listBox1.SelectedIndex);
}
private void TeacherForm_Load(object sender, EventArgs e)
{
DirectoryInfo dinfo = new DirectoryInfo(@"data\Teachers\");
FileInfo[] Files = dinfo.GetFiles("*.xml");
foreach (FileInfo file in Files)
{
listBox1.Items.Add(file.Name);
}
}
如果您有访问该文件的适当权限,这应该可以正常工作:
System.IO.File.Delete(listBox1.SelectedItem.ToString());
以上代码只适用于ListBoxItem
为字符串的情况。否则,您可以考虑将其转换为您的数据 class 并使用适当的 属性。看你发的代码,不需要。
所以你的最终代码将是这样的:
private void tDeletebtn_Click(object sender, EventArgs e)
{
if (listBox1.SelectedIndex != -1)
{
System.IO.File.Delete(listBox1.Items[listBox1.SelectedIndex].ToString());
listBox1.Items.RemoveAt(listBox1.SelectedIndex);
}
}
参见:
请确保,您确实在 ListBox
中选择了某些内容!
如果您的 listBox1.Items
包含您的文件路径,您可以简单地通过取消引用 filepath
来传递它并使用 File.Delete
删除它,如下所示:
private void tDeletebtn_Click(object sender, EventArgs e)
{
if (listBox1.SelectedIndex != -1){
string filepath = listBox1.Items[listBox1.SelectedIndex].ToString();
if(File.Exists(filepath))
File.Delete(filepath);
listBox1.Items.RemoveAt(listBox1.SelectedIndex);
}
}
也就是说,如果您使用 FullName
而不是使用 Name
将路径添加到 listBox1
:
DirectoryInfo dinfo = new DirectoryInfo(@"data\Teachers\");
FileInfo[] Files = dinfo.GetFiles("*.xml");
foreach (FileInfo file in Files)
{
listBox1.Items.Add(file.FullName); //note FullName, not Name
}
如果你不想在listBox1
中不加全名,你也可以单独存储Folder
名字,因为它无论如何都不会改变:
string folderName; //empty initialization
.
.
DirectoryInfo dinfo = new DirectoryInfo(@"data\Teachers\");
FileInfo[] Files = dinfo.GetFiles("*.xml");
folderName = dinfo.FullName; //here you initialize your folder name
//Thanks to FᴀʀʜᴀɴAɴᴀᴍ
foreach (FileInfo file in Files)
{
listBox1.Items.Add(file.Name); //just add your filename here
}
然后你就这样使用它:
private void tDeletebtn_Click(object sender, EventArgs e)
{
if (listBox1.SelectedIndex != -1){
//Put your folder name here..
string filepath = Path.Combine(folderName, listBox1.Items[listBox1.SelectedIndex].ToString());
if(File.Exists(filepath))
File.Delete(filepath);
listBox1.Items.RemoveAt(listBox1.SelectedIndex);
}
}
我想从列表框和文件夹中删除选定的文件。现在它只是将其从列表框中删除。现在我希望它也从文件夹中删除。谢谢
private void tDeletebtn_Click(object sender, EventArgs e)
{
if (listBox1.SelectedIndex != -1)
listBox1.Items.RemoveAt(listBox1.SelectedIndex);
}
private void TeacherForm_Load(object sender, EventArgs e)
{
DirectoryInfo dinfo = new DirectoryInfo(@"data\Teachers\");
FileInfo[] Files = dinfo.GetFiles("*.xml");
foreach (FileInfo file in Files)
{
listBox1.Items.Add(file.Name);
}
}
如果您有访问该文件的适当权限,这应该可以正常工作:
System.IO.File.Delete(listBox1.SelectedItem.ToString());
以上代码只适用于ListBoxItem
为字符串的情况。否则,您可以考虑将其转换为您的数据 class 并使用适当的 属性。看你发的代码,不需要。
所以你的最终代码将是这样的:
private void tDeletebtn_Click(object sender, EventArgs e)
{
if (listBox1.SelectedIndex != -1)
{
System.IO.File.Delete(listBox1.Items[listBox1.SelectedIndex].ToString());
listBox1.Items.RemoveAt(listBox1.SelectedIndex);
}
}
参见:
请确保,您确实在 ListBox
中选择了某些内容!
如果您的 listBox1.Items
包含您的文件路径,您可以简单地通过取消引用 filepath
来传递它并使用 File.Delete
删除它,如下所示:
private void tDeletebtn_Click(object sender, EventArgs e)
{
if (listBox1.SelectedIndex != -1){
string filepath = listBox1.Items[listBox1.SelectedIndex].ToString();
if(File.Exists(filepath))
File.Delete(filepath);
listBox1.Items.RemoveAt(listBox1.SelectedIndex);
}
}
也就是说,如果您使用 FullName
而不是使用 Name
将路径添加到 listBox1
:
DirectoryInfo dinfo = new DirectoryInfo(@"data\Teachers\");
FileInfo[] Files = dinfo.GetFiles("*.xml");
foreach (FileInfo file in Files)
{
listBox1.Items.Add(file.FullName); //note FullName, not Name
}
如果你不想在listBox1
中不加全名,你也可以单独存储Folder
名字,因为它无论如何都不会改变:
string folderName; //empty initialization
.
.
DirectoryInfo dinfo = new DirectoryInfo(@"data\Teachers\");
FileInfo[] Files = dinfo.GetFiles("*.xml");
folderName = dinfo.FullName; //here you initialize your folder name
//Thanks to FᴀʀʜᴀɴAɴᴀᴍ
foreach (FileInfo file in Files)
{
listBox1.Items.Add(file.Name); //just add your filename here
}
然后你就这样使用它:
private void tDeletebtn_Click(object sender, EventArgs e)
{
if (listBox1.SelectedIndex != -1){
//Put your folder name here..
string filepath = Path.Combine(folderName, listBox1.Items[listBox1.SelectedIndex].ToString());
if(File.Exists(filepath))
File.Delete(filepath);
listBox1.Items.RemoveAt(listBox1.SelectedIndex);
}
}