2010-10-16 4 views
1

Вкратце, я хочу создать приложение, в котором пользователи могут перетащить файл из своего поискового устройства (mac) или своего компьютера-исследователя (ПК) в место в моем приложении, а затем перетащить файл будет загружен в приложение.C# Функция перетаскивания

У меня нет какого-либо доступа к событиям перетаскивания (предположительно), поскольку я использую механизм рендеринга для всего графического интерфейса. (Это делается в Unity3D, если быть точным)

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

Любая помощь?

P.S: Несмотря на то, что у меня может не быть доступа к событиям перетаскивания, классам и т. Д., Все равно полезно услышать о них!

+0

http://msdn.microsoft.com/en-us/library/ms678405.aspx –

ответ

1

Это довольно легко сделать с WinForms (есть события для этого).

Поскольку вы не используете WinForms, вам необходимо использовать WinAPI. Вы можете зарегистрировать свое окно, чтобы принять перетаскивание событий & с помощью RegisterDragDrop Function и IDropTarget Interface (или использовать его).

[DllImport("ole32.dll")] 
static extern int RegisterDragDrop(IntPtr hwnd, IDropTarget pDropTarget); 
+0

Привет! Это выглядит великолепно! Я загрузил копию файла dll и использовал «using System.Windows.Forms;» не возвращает ошибок. Тем не менее, я действительно совершенно не знаю, что я должен пройти в RegisterDragDrop! Не могли бы вы просветить меня? Кроме того, это только ПК? Я развиваюсь от mac, а m userbase - в основном mac. –

+0

Я пропустил часть Mac. ole32 - это WinAPI (windows) - не уверен, что он работает и с маками. Никогда не пробовал на Mac. Если вам повезет, интерфейс IDropTarget уже реализован в графическом интерфейсе Unity3D, который вы используете, и вы просто реализуете правильные события. Если нет, вам нужно будет создать собственный контроль и реализовать интерфейс. Поэтому, если вы хотите отбросить файлы в TextBox, вам нужно будет использовать MyTextBox с «IDropTarget». 'hwnd' - это дескриптор вашего окна. Никогда не использовал Unity3D, не могу вам помочь :( –

+0

Я сомневаюсь, что Unity3d поставляется с необходимыми классами, хотя файл DLL, который я загрузил, МОЖЕТ. Я не знаю, что такое дескриптор окна, и я не могу ничего реализовать в тексте Я обычно называю GUI.TextBox (позиционирование/текстовые параметры). Unity3Di отлично подходит для 3D-игр, но это движок UI, скорее, отстой. :(Есть ли другие варианты? –

Смежные вопросы