2013-03-11 3 views
0

В моем проекте пользователь должен определить несколько путей. Нажав кнопку, откроется окно, в котором вы можете перетащить файл/папку из обозревателя Windows в это окно. Затем мое приложение примет этот путь и сохранит его.VB.NET Как перетащить файл из Windows Explorer в конкретную форму?

У меня есть основная форма, где находится кнопка на странице настроек. Это открывает новую форму form.show. В этой новой форме у меня есть еще одна кнопка. Нажав на нее, откроется другая небольшая форма, где вы можете удалить вещи (form.show). Здесь все становится сложно. Я не могу работать с перетаскиванием.

Public Class drag 

    Private Sub dragdrop_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
     Me.TopMost = True 
     Me.AllowDrop = True 
    End Sub 

    Private Sub drag_DragDrop(sender As System.Object, e As System.Windows.Forms.DragEventArgs) Handles Me.DragDrop 
     Dim theFiles() As String = CType(e.Data.GetData("FileDrop", True), String()) 
     For Each theFile As String In theFiles 
      MsgBox(theFile) 
     Next 
    End Sub 

    Private Sub drag_DragEnter(sender As System.Object, e As System.Windows.Forms.DragEventArgs) Handles Me.DragEnter 
     If e.Data.GetDataPresent(DataFormats.FileDrop) Then 
      e.Effect = DragDropEffects.Copy 
     End If 
    End Sub 
End Class 

Если я создаю новый проект и вставляю точный код в form1, он работает. Почему это не работает в этом многообразном проекте и как я могу это исправить?

+0

Проверьте этот вопрос. http://stackoverflow.com/questions/11686631/vb-net-drag-drop-and-get-file-path Надежда полезным. – Freelancer

+0

На самом деле, я чувствую, что ваш вопрос является точным дубликатом этого. – Freelancer

+0

Нет, это не так. У меня такой же код, но он не работает над моим проектом. Если я создам новый проект, он будет работать. Единственное отличие состоит в том, что у меня есть несколько форм в моем проекте. – Alexander

ответ

0

Я нашел проблему. Это безопасность с запущенными приложениями в качестве прав администратора в Vista/7/8.

Проблема связана с тем, как работают разрешения безопасности. Возможность перетаскивания мышью с обычных приложений на повышенную может привести к поломке модели безопасности после UAC. Тем не менее, я не знаю, почему сообщение UAC не отображается, что позволяет использовать временную повышенную операцию (как и любой пользователь Linux каждый день). Это определенно то, над чем Microsoft должна работать. Что беспокоит меня в том, что эта проблема уже старая. Vista вела себя так же.

Там в 2 вещи, которые вы можете сделать (один некрасиво, один раздражающий)

Гадкий: Отключение контроля учетных записей. Но вы теряете всю дополнительную безопасность, которую он предлагает.

Раздражение: используйте другой диспетчер файлов и запустите его также как администратор Почему еще один файловый менеджер? Потому что вы действительно не можете поднять Windows Explorer. Несмотря на то, что в контекстном меню окна Windows отображается значок «Проводник» и отображается приглашение UAC, факт: Windows Проводник не будет повышен.

+0

Источник: http://superuser.com/questions/59051/drag-and-drop-file-into-application-under-run-as-administrator – Alexander

+0

Ну, вы можете запустить ту часть программы, которая нормальна, и только попросите администратора priviliges, когда они понадобятся. –

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