我想允许在我的应用程序中删除图像文件:用户可以从Windows拖动图像并将其放入我的窗口。我有以下代码,但它似乎无法正常工作。我试过FileDrop
& Bitmap
,都失败了
private void Border_DragEnter(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.FileDrop)) {
e.Effects = DragDropEffects.Copy;
} else {
e.Effects = DragDropEffects.None;
}
}
private void Border_Drop(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.FileDrop))
{
MessageBox.Show(e.Data.GetData(DataFormats.FileDrop).ToString());
}
else
{
MessageBox.Show("Can only drop images");
}
}
如何查看用户尝试删除的格式?
答案 0 :(得分:4)
如果用户正在从资源管理器中拖动,那么您获得的只是一个文件名列表(带路径)。一个简单且最常用的解决方案是查看文件扩展名,以及它们是否与预定义的受支持扩展名列表匹配。
像这样的东西(未经过测试,甚至可能无法编译,但希望你能得到这个想法)
var validExtensions = new [] { ".png", ".jpg", /* etc */ };
var lst = (IEnumerable<string>) e.Data.GetData(DataFormats.FileDrop);
foreach (var ext in lst.Select((f) => System.IO.Path.GetExtension(f)))
{
if (!validExtensions.Contains(ext))
return false;
}
return true;