C # / WPF: перетаскивание изображений - PullRequest
3 голосов
/ 05 октября 2010

Я хочу разрешить удаление файлов изображений в моем приложении: пользователи могут перетаскивать изображения из 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");
    }
}

Как я могу проверить, какие форматы пользователь пытается отбросить?

1 Ответ

4 голосов
/ 05 октября 2010

Если пользователь перетаскивает из проводника, то все, что вы получаете, это список имен файлов (с путем). Простым и в основном рабочим решением было бы посмотреть на расширения файлов и, если они соответствуют предварительно определенному списку поддерживаемых расширений.

Примерно так (не проверено, может даже не компилироваться, но, надеюсь, вы поняли)

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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...