Предоставление функции перетаскивания файлов в приложении Visual C#

В этой статье показано, как предоставить функции перетаскивания файлов в приложении Visual C#.

Исходная версия продукта: Visual C++
Исходный номер базы знаний: 307966

Сводка

Пошаговая процедура, описанная в этой статье, демонстрирует, как предоставить функции перетаскивания файлов в приложении Visual C#. Элемент ListBox управления используется в качестве назначения процедуры перетаскивания файла.

Требования

В этом списке перечислены рекомендуемые оборудование, программное обеспечение, сетевая инфраструктура и пакеты обновления: Visual C#.

В этой статье предполагается, что вы знакомы со следующими разделами:

  • Windows Forms ListBox control
  • Windows Forms event handling

Действия по созданию примера

Элемент управления ListBox предоставляет два события перетаскивания, которые необходимо обработать: DragEnter и DragDrop. Это DragEnter событие возникает при перетаскивании объекта в пределах элемента управления и используется для определения того, является ли перетаскиваемый объект объектом, который требуется удалить в элементе управления. Это событие обрабатывается в случаях, когда файл или файлы перетаскиваются в элемент управления . Это позволяет отображать соответствующий значок при перетаскивании объекта по элементу управления в зависимости от перетаскиваемого объекта. Событие DragDrop возникает, когда перетаскиваемый объект был освобожден в элементе управления . Это событие обрабатывается для получения объекта . Объект Data используется для получения данных.

Метод объекта GetData Data возвращает массив строк, содержащих полные имена путей файлов, которые были перетащится в ListBox элемент управления . Эти сведения о пути к файлу можно использовать для выполнения любых операций, необходимых для файлов. Например, классы в System.IO пространстве имен можно использовать для открытия и чтения файлов, перемещения файлов или копирования файлов в новое расположение. В этом примере вы просто добавляете полный путь к файлам, которые перетаскиваются в ListBox элемент управления .

Чтобы предоставить функции перетаскивания файлов в приложении Visual C#, выполните следующие действия.

  1. Создайте новое приложение Windows Forms в Visual C# .NET или Visual C# 2005. Форма Form1 создается по умолчанию.

  2. Используйте панель элементов, чтобы добавить элемент управления в ListBoxForm1.

  3. В окне Свойства измените AllowDrop свойство ListBox элемента управления на True , чтобы разрешить перетаскивание объектов в элемент управления.

  4. В Обозреватель решений щелкните правой кнопкой мыши Form1 и выберите пункт Просмотреть код.

  5. Чтобы обработать DragEnter событие, добавьте следующий метод под разделом кода, который форма Windows Form Designer создать в Form1 классе :

    private void listBox1_DragEnter(object sender, System.Windows.Forms.DragEventArgs e)
    {
        if(e.Data.GetDataPresent(DataFormats.FileDrop))
            e.Effect = DragDropEffects.All;
        else
            e.Effect = DragDropEffects.None;
    }
    
  6. Чтобы обработать DragDrop событие, добавьте следующий метод в Form1 класс сразу после метода, добавленного на шаге 5:

    private void listBox1_DragDrop(object sender, System.Windows.Forms.DragEventArgs e)
    {
        string[] s = (string[]) e.Data.GetData(DataFormats.FileDrop, false);
        int i;
        for(i = 0; i < s.Length; i++)
            listBox1.Items.Add(s[i]);
    }
    
  7. Чтобы связать два обработчика событий с событиями элемента управления, добавьте следующий код в Form1 конструктор после вызова InitializeComponent:

    this.listBox1.DragDrop += new
         System.Windows.Forms.DragEventHandler(this.listBox1_DragDrop);
    this.listBox1.DragEnter += new
         System.Windows.Forms.DragEventHandler(this.listBox1_DragEnter);
    
  8. Выполните сборку и запуск проекта.

  9. Перетащите один или несколько файлов из рабочего стола или другой папки в элемент управления ListBox. Полный путь к файлам добавляется в ListBox элемент управления .

Ссылки

Дополнительные сведения см. на следующих веб-сайтах: