Перетащите перенос файлов в WPF. Как получить имя файла отброшенного контента в окне - PullRequest
4 голосов
/ 28 октября 2010

Я создаю локальное приложение для передачи файлов. Я бы хотел, чтобы пользователь перетащил элемент в приложение для передачи файлов, чтобы инициировать передачу файлов так же, как в Skype или других мессенджерах.

При выпадении предмета. Событие отбрасывания было вызвано. Но я не знаю, где можно получить подробную информацию о предмете, такую ​​как местоположение, размер и т. Д., Например, если я уроню изображение. Я хочу прочитать детали, упомянутые выше.

Примечание. Я включил событие AllowDrop & Subsribed to Drop. [Если это поможет]

1 Ответ

5 голосов
/ 28 октября 2010

Вы имеете в виду Размер файла или Размер изображения в пикселях? В любом случае используйте этот код:

private void Window_Drop(object sender, DragEventArgs e)
    {
        if (e.Data.GetDataPresent(DataFormats.FileDrop, true))
        {
            string[] droppedFilePaths = e.Data.GetData(DataFormats.FileDrop, true) as string[];
            foreach (var path in droppedFilePaths)
            {          
                string location = null;
                int pxWidth = 0, pxHeight = 0;

                FileInfo fi = new FileInfo(path);
                //fi.Length  //File size
                //fi.DirectoryName //Directory
                using (var fs = fi.OpenRead())
                {
                    try
                    {
                        var bmpFrame = BitmapFrame.Create(fs);
                        var m = bmpFrame.Metadata as BitmapMetadata;
                        if (m != null)
                            location = m.Location;
                        pxWidth = bmpFrame.PixelWidth;
                        pxHeight = bmpFrame.PixelHeight;
                    }
                    catch
                    {
                        //File isn't image
                    }
                }

                this.fileList.Items.Add(string.Format("({0}x{1}), location: {2}", pxWidth, pxHeight, location));
            }
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...