Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/22: Рейтинг темы: голосов - 22, средняя оценка - 4.64
12 / 12 / 0
Регистрация: 06.05.2011
Сообщений: 250
1

Как отловить событие перетаскивания файла на форму и получить информацию о нем?

11.12.2011, 21:08. Показов 4490. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Как отлавить событие перетаскивания файла на форму и получить информация о нем, например путь к нему?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.12.2011, 21:08
Ответы с готовыми решениями:

Как отловить событие чтения текстового файла
Приветствую всех, друзья! Возник такой вопрос: Вот у меня есть некий текстовый файл....

Как отловить событие создания файла в папке
Пользователь, к примеру, пытается создать в папке новый файл, или скопировать туда существующий. В...

Как отловить событие загрузки файла в теге input type="file"
accept почему-то не работает, решил сделать проверку на формат через js, как и всю остальную форму....

Можно ли отловить событие создания файла?
т.е. есть ресурс на котором пользователи создают файлы. Как выполнить скрипт обрабатывающий эти...

7
755 / 554 / 48
Регистрация: 17.06.2010
Сообщений: 1,041
Записей в блоге: 1
12.12.2011, 09:42 2
Лучший ответ Сообщение было отмечено OwenGlendower как решение

Решение

VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Public Class Form1
    Private Sub Form1_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles Me.DragDrop
        Dim file() As String = CType(e.Data.GetData(DataFormats.FileDrop), String())
        For I As Integer = 0 To file.Length - 1
            MsgBox(file(I))
        Next
    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) Then
            e.Effect = DragDropEffects.Copy
        Else
            e.Effect = DragDropEffects.None
        End If
    End Sub
 
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.AllowDrop = True
    End Sub
End Class
4
12 / 12 / 0
Регистрация: 06.05.2011
Сообщений: 250
12.12.2011, 13:09  [ТС] 3
Пасибо, все работает!
0
1 / 1 / 0
Регистрация: 21.11.2018
Сообщений: 82
11.01.2019, 19:20 4
gitarillo, Спасибо за код! А можно получить например вместо имени файла, дату создания и время создания? Не могу понять где в коде получаем путь к файлу?
0
Администратор
Эксперт .NET
17689 / 13817 / 5310
Регистрация: 17.03.2014
Сообщений: 28,326
Записей в блоге: 1
11.01.2019, 20:46 5
westcoast89, пути к файлу получаются в обработчике события Form.DragDrop. В примере gitarillo это строка №3
VB.NET
3
        Dim file() As String = CType(e.Data.GetData(DataFormats.FileDrop), String())
Далее для каждого элемента массива можно создать экземпляр System.IO.FileInfo и прочитать Length и другую нужную информацию.
1
1 / 1 / 0
Регистрация: 21.11.2018
Сообщений: 82
11.01.2019, 22:42 6
OwenGlendower, Знаний не хватат
Как я понял, при перетаскивании файла мы получаем все его содержимое, при помощи этого фрагмента
VB.NET
1
CType(e.Data.GetData(DataFormats.FileDrop), String())
Потом это все присваивается в пременную(?) file.
И я не понимаю как вытащить например время создания или дату изменения в другую переменную...
0
Администратор
Эксперт .NET
17689 / 13817 / 5310
Регистрация: 17.03.2014
Сообщений: 28,326
Записей в блоге: 1
11.01.2019, 23:10 7
Цитата Сообщение от westcoast89 Посмотреть сообщение
Как я понял, при перетаскивании файла мы получаем все его содержимое, при помощи этого фрагмента
Откуда ты это понял? Я же написал что там передается путь к файлу. Точнее массив путей чтобы на форму можно было бросить несколько файлов. Установить это можно было элементарным экспериментом скопировав код gitarillo. Большого опыта для этого не нужно.

Раз у тебя такие сложности, то вот пример определения длины файла. Как получить дату файла разберись самостоятельно.
VB.NET
1
2
3
4
5
6
7
8
Private Sub Form1_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles Me.DragDrop
    Dim files() As String = CType(e.Data.GetData(DataFormats.FileDrop), String())
    For Each filePath In files
        Dim info As New FileInfo(filePath)
        Dim fileLength As Long = info.Length
        ' ...
    Next
End Sub
2
1 / 1 / 0
Регистрация: 21.11.2018
Сообщений: 82
11.01.2019, 23:25 8
Цитата Сообщение от OwenGlendower Посмотреть сообщение
Откуда ты это понял? Я же написал что там передается путь к файлу. Точнее массив путей чтобы на форму можно было бросить несколько файлов. Установить это можно было элементарным экспериментом скопировав код gitarillo. Большого опыта для этого не нужно.
Конечно я так и сделал, вставил код и проверил. Просто видимо не правильно выразился(
Цитата Сообщение от OwenGlendower Посмотреть сообщение
Раз у тебя такие сложности, то вот пример определения длины файла. Как получить дату файла разберись самостоятельно.
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Public Class Form1
    Private Sub Form1_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles Me.DragDrop
        Dim files() As String = CType(e.Data.GetData(DataFormats.FileDrop), String())
        For Each filePath In files
            Dim info As New System.IO.FileInfo(filePath)
            Dim fileLength As Long = info.Length
            Dim fileCreat As Date = info.CreationTime
            MsgBox(fileCreat)
        Next
    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) Then
            e.Effect = DragDropEffects.Copy
        Else
            e.Effect = DragDropEffects.None
        End If
    End Sub
 
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.AllowDrop = True
    End Sub
End Class
Вот вроде получилось. Спасибо огромное!
0
11.01.2019, 23:25
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.01.2019, 23:25
Помогаю со студенческими работами здесь

Как после перетаскивания файлов из Эксплорера в мою форму узнать их пути?
Подскажите, как после перетаскивания файлов из Эксплорера в мою форму узнать их пути? Что-то я сам...

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

Как получить информацию из AVI-файла?
Всем доброго времени суток! Есть некий видео-файл и из него нужно вытянуть данные -...

Как отловить событие ?
Есть следующее: <div id="asd"> <div class="qwe"> <div id="1" class="zxc"></div> ...

Программа, позволяющая пользователю ввести символ и получить полную информацию о нем
Пожалуйста, помогите написать программу, позволяющую пользователю ввести символ и получить полную...

Как отловить событие WM_SIZE?
создаю окно, wndproc switch (Message) { case WM_CLOSE: case WM_SIZE:...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru