2013-04-05 2 views
0

Я разрабатываю приложение для чтения XML-файлов, получения его данных и заполнения некоторого поля. Итак, я реализовал два способа получить файл: через командную кнопку и через событие формы перетаскивания. Все в порядке, если я использую файл, хранящийся в папке на моем компьютере. Я могу перетащить файл, курсор меняет внешний вид на эффект копирования и т. Д. Однако, когда я пытаюсь сделать это, перетащив файл в виде вложения Outlook (моя версия - 2010), я вижу, что курсор принимает запрещенный эффект и файл не читается.VB.NET - Как перетащить файл из Outlook 2010 в мою форму?

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

Заранее спасибо.

Private Sub FrmJIG_DragDrop(sender As Object, e As DragEventArgs) _ 
    Handles Me.DragDrop 
    Dim files() As String = e.Data.GetData(DataFormats.FileDrop) 
    Dim filestype() As String 

    filestype = e.Data.GetData(DataFormats.FileDrop) 
    Dim sReader As New StreamReader(filestype(0)) 

    'get the filename from the file without the path 
    Dim file_name As String = Path.GetFileName(filestype(0)) 

    'check the extension of the file 
    If Path.GetExtension(filestype(0)).ToLower() = ".xml" Then 
     'Read the xml file 
     For Each path In files 
      ReadXMLFile(path) 
     Next 
    Else 

     'warning about the file type 
     MessageBox.Show("Only XML files are supported!", "Warning!", _ 
MessageBoxButtons.OK, _ 
    MessageBoxIcon.Warning) 
    End If 
End Sub 

Private Sub FrmJIG_DragEnter(sender As Object, e As DragEventArgs) _ 
Handles Me.DragEnter 

    'change the cursor type to drag and drop type 
    If e.Data.GetDataPresent(DataFormats.FileDrop) Then 
     e.Effect = DragDropEffects.Copy 
    End If 
End Sub 
+0

Пожалуйста, попробуйте проверить также 'e.Data.GetDataPresent ("FileGroupDescriptor")' –

+0

Привет Эдуардо. Спасибо за ваш ответ. Как это должно быть реализовано в коде выше? – JoseFernandes

+0

Добавлен aswer с кодом, измененным –

ответ

0

Пожалуйста, попробуйте с

Private Sub FrmJIG_DragEnter(sender As Object, e As DragEventArgs) _ 
Handles Me.DragEnter 

    'change the cursor type to drag and drop type 
    If e.Data.GetDataPresent(DataFormats.FileDrop) or e.Data.GetDataPresent("FileGroupDescriptor") Then 
     e.Effect = DragDropEffects.Copy 
    End If 
End Sub 
+0

Hola Eduardo. Большое спасибо! Я попробую сегодня. – JoseFernandes

+0

Привет Эдуардо. Ваш совет отлично работал, чтобы изменить поведение курсора. Спасибо! – JoseFernandes

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