Получить полный путь перетаскиваемого на форму файла - Visual Basic .NET

  1. Подскажите как сделать следующее. 1. Всё пространство формы способно принимать файл. 2. Получить полный путь перетащенного.


textual

Код:

Public Class Form1
 
    Private Sub Form1_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles Me.DragDrop
        For Each oneFile As String In e.Data.GetData(DataFormats.FileDrop) ' ну мы же тащим файл. Кстати, если потащить папку, то выдаст путь к папке. Если кучу файлов - количество сообщений будет соответствующим
            MsgBox(oneFile)
        Next oneFile
 
    End Sub
 
    Private Sub Form1_DragEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles Me.DragEnter
        If (e.Data.GetDataPresent(DataFormats.FileDrop) = True) Then
            e.Effect = DragDropEffects.Copy ' это всего лишь вид значка курсора, выбирается из списка
        End If
    End Sub
 
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.AllowDrop = True ' т.к. по-умолчанию установлено False, а нам надо на нее таскать
    End Sub
End Class


Похожие ответы
  1. Измучался! Понятно - не ас, хоть в VB.Net не первый день. Но уже двое суток бьюсь и никак! Помогите: Есть dll написанная в Delphi (с частями исходников), пытаюсь из неё получать информацию и получаю вечные - "PInvoke не возвращает Variable" или разнообразие типа того... В общем вызываю функции а результат вечно никак... Вот отрывок кода из Delphi:Delphi1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 Library NativeDll;   uses   SysUtils,   Windows;   type     PImageSet = ^TImageSet;   TImageSet = packed record     Size     : Word;     FileName : Array[0..200] of Char;   end;     MsgSet = ^TMsgSet;   TMsgSet = packed record     Size     : Word;     Msg      : Array[0..200] of Char;   end;   function GetImage( Card: DWORD; Info: PImageSet ): Integer; stdcall; export; begin   Result := 1;   if Card = 5 then begin     Result := 0;     Info^.FileName := 'BOOBLE.BMP';   end; end;   function GetMessage( Card: DWORD; Info: MsgSet ): Integer; stdcall; export; begin   Result := 1;   if Card in [1..100] then begin     Result := 0;     Info^.Msg := 'Привет Васек!';   end; end;   exports   GetMessage,   GetImage;   begin end.Вызываю примерно так:vb.net1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 Imports System Imports System.Text Imports System.Runtime.InteropServices   Public Class NativeDelphi       Public Structure PImageSet         Dim Size As Int16         Dim FFile() As Char ' пробовал всякое     End Structure       Public Structure MsgSet         Dim Size As Int16         Dim Foto() As Char ' пробовал всякое     End Structure       _     Public Shared Function GetImage(ByRef Results As PImageSet) As Integer     End Function       ' и пробовал так       _     Public Shared Function GetMessage( ByRef Result As MsgSet)     End Function   End ClassОшибки да и только. Уж вынес весь мозг. Перепробовал всякое. В инете толковых преобразований Delphi->VB.NET (особенно по поводу packed record и его понимания в VB.NEt, а задом чую - что собака там залежалась) не видать. В общем если не решу - сопьюсь братцы... (и так литров 15 пива выпил в поиске да кучу сайтов (по сиг с каждого) покурил) Пожалейте здоровие мое! PS: На счет маршалить - тут я честно говоря лох. Мож чего не так понимаю. Ясно одно - данные из дельфей приходят пакетом вполне упорядоченной структуры и размером, а как его жевать в VB.NET мне пока непонятно. И есть еще один, для меня пока совсем непонятный тип - PChar (да не, про него я начитался вдоволь, просто непонятно - как его правильно принять из DLL Дельфей в VB.NET, учитывая, что он упакованный) В общем плиз HELP! Заранее ПАСИБО!

  1. Друзья, спасите! Заблудился в трех соснах: GaphicsPath, Region и Intersect. Вот пример задачи: Кликните здесь для просмотра всего текста vb.net1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25     Private Sub Panel1_Paint(sender As Object, e As PaintEventArgs) Handles Panel1.Paint         'исходные фигуры - прямоугольник rect и замкнутый контур grpth         Dim rect As New Rectangle(70, 120, 160, 120)         Dim pts As Point() = {New Point(100, 100), New Point(100, 200), New Point(200, 200), New Point(200, 300),                               New Point(300, 300), New Point(300, 100), New Point(100, 100)}           Dim grpth As New GraphicsPath(pts, {0, 1, 1, 1, 1, 1, 1})         '==========         Dim reg As New Region(grpth)         'часть прямоугольника внутри контура         reg.Intersect(rect)         e.Graphics.FillRegion(Brushes.Yellow, reg)         'отодвинем результирующий регион для наглядности         Dim mx As New Matrix         mx.Translate(250, 0)         reg.Transform(mx)         e.Graphics.FillRegion(Brushes.Yellow, reg)         'сверху рисуем исходные фигуры         e.Graphics.DrawPath(Pens.Blue, grpth)         e.Graphics.DrawRectangle(Pens.Red, rect)         'что дальше???         Dim newGraphicsPath As New GraphicsPath '= reg.???????         End Sub и картинка: Кликните здесь для просмотра всего текста Надо получить GraphicsPath желтого Region. Либо сразу GraphicsPath общей области красной и синей фигуры.

  1. Привет! Всю мужскую половину этого замечательного форума с праздником! Парни, возник вопрос. Нужна помощь. Есть две строки: cybErforum cyberfoRum Как более быстро и правильно можно получить индексы отличающихся символов подстроки? В примере выше, это индексы 3 и 7. Как их получить?

  1. Здравствуйте, я бы хотел реализовать открытие программы(в автозагрузки windows) в фоновом виде.Windows Batch file1 myapp.exe -hideНе знаю как получить параметр(argument).vb.net1 2 3 4 5  Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load         If argument = "hide" Then             Me.Hide()         End If     End SubПожалуйста, помогите решить данную задачу заранее Спасибо!

  1. Из символов одного текста с помощью строковых функций о операций конкатенация получить другой текст. Из «индивидуальность» получить «диво» и «лавина» Преобразовать текст: Из теста «каков поп, таков и приход» получить текст «каков приход, таков и поп»

  1. Всем доброго времени суток. Необходимо мониторить размер свободного места на сетевом диске. Есть IO.DriveInfo.TotalFreeSpace но с помощью него можно получить информацию о дисках только на локальном компьютере. А как подключиться к компьютеру в локальной сети (например, имеющему адрес 192.168.x.x)? Заранее всем спасибо.

  1. Доброго времени суток! Как можно получить выбранный цвет элементов Windows.

  1. Привет всем. Нужно сделать так чтобы размеры ellips менялись при помощи numericupisdown в запущенной форме.Вот код vb.net1 2 3 4 5 6 7 Public Sub Form1_Paint(sender As Object, e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint         '         Dim ellips As New RectangleF(0, 0, 20, 20)           e.Graphics.DrawEllipse(Pens.Red, ellips)           End Sub

  1. Здравствуйте, как можно вытащить все разделы которые находятся в HKEY_CLASSES_ROOT\DesktopBackground\Shell\ ?

  1. Здравствуйте, помогите пожалуйста со следующей задачей. Мне нужно "вытащить" все картинки из документа Word и занести их в ячейки грида. Через гугл нашел следующий способ:vb.net1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27         For Each wFile In My.Computer.FileSystem.GetFiles(Path)             If wFile.EndsWith("doc") Or wFile.EndsWith("docx") And wFile.Contains("~$") = False Then                 Dim appWd As Application = New Application                 appWd.Visible = False                 Dim docWd As Document = appWd.Documents.Open(wFile)                 Dim col As New DataGridViewComboBoxColumn                 With col                     .HeaderText = "Figure"                 End With                 Dim imgCount As Integer                   dgvMain.Rows.Add()                   For imgCount = 1 To docWd.Shapes.Count                     docWd.Shapes(imgCount).Select()                     appWd.Selection.CopyAsPicture()                     dgvMain.Columns.Add(col)                     If Clipboard.ContainsImage Then                         dgvMain.Rows(0).Cells(imgCount).Value = Clipboard.GetImage                         PictureBox1.Image = Clipboard.GetImage                     End If                 Next                   docWd.Close()                 appWd.Quit()             End If         NextДаже если в PictureBox и появляется картинка, то она далеко не последняя в документе, что говорит о том, что не все изображения обрабатываются. В датагриде заполняется только одна ячейка, и не картинкой, а надписью System.Drawing.Bitmap. Заранее спасибо.