Windows Forms контроля реализации перетаскивания содержимого функции (DragDrop)

Во-первых, содержание управления на другие элементы управления

  В процессе развития, часто имеют такое требование, данные элемент управления сопротивлением для управления другим. Например, в котором ListBox данных на другой в ListBox. Или перетащить DataGridView данные на узел в TreeView.  

  В заявке, путем обработки серии событий, таких как DragEnter, DragLeave и события DragDrop для реализации перетаскивания в операциях приложений Windows. Используя имеющуюся информацию об этих параметрах событий, вы можете легко перетаскивать.

  Операции перетаскивания в коде через три этапа, во-первых, чтобы начать операцию перетаскивания для достижения ответного кода события MouseDown на контроле и перетащить данные, необходимые, и вызывает метод DoDragDrop (); а затем перетащить эффекты в мишени Добавить DragEnter код ответа событий и т.п., используя DragDropEffects перечисляемого типа копирования или перемещения перетаскивания эффект на управление, последняя операция заключается в размещении данных, добавьте DragDrop контрольный код ответа на цель, чтобы добавить данные к цели управления.

частная  пустота Form1_Load ( объект отправителя, System.EventArgs е) 
{ 
    это .listBox1.AllowDrop = верно ;
    это .listBox2.AllowDrop = верно ;
    это .listBox1.Items.Add ( " " );
    это .listBox1.Items.Add ( " б " );
    это .listBox1.Items.Add ( " C " ); 
} Частная пустота listBox1_MouseDown ( объект отправителя, System.Windows.Forms.MouseEventArgs е) 
{ это

 
    .listBox1.DoDragDrop ( это .listBox1.Items [ это .listBox1.SelectedIndex], DragDropEffects.Move); 
} 

Частная  пустота listBox2_DragEnter ( объект отправителя, System.Windows.Forms.DragEventArgs е) 
{ 
    если (e.Data.GetDataPresent (DataFormats.Text)) 
    { 
        e.Effect = DragDropEffects.Move; 
    } 
} 

Частный  недействительным listBox2_DragDrop ( объект отправителя, System.Windows.Forms.DragEventArgs е) 
{ 
    это .listBox2.Items.Add (e.Data.GetData (DataFormats.Text));
    это.listBox1.Items.Remove (e.Data.GetData (DataFormats.Text)); 
}

Во-вторых, перетащите файл для управления доступом к документам пути

  Перетащите файл или каталог в вашу программу, что пользовательский опыт хорош.

  Получить тащили по пути кода: (System.Array) e.Data.GetData (DataFormats.FileDrop).

  Затем вы можете скопировать и вставить эти пути.

общественный  частичный  класс Form1: Form 
{ 
    общественного Form1 () 
    { 
        InitializeComponent (); 
    } 

    Частная  пустота Form1_Load ( объект отправителя, EventArgs е) 
    { 
        SetCtrlDrag.SetCtrlDragEvent ( это .textBox1); 
    } 
} 

Общественного  класс SetCtrlDrag 
{ 
    общественной  статическая  пустота SetCtrlDragEvent (контроль Ctrl) 
    { 
        если (Ctrl является TextBox) 
        { 
            TextBox , Т.Б. = Ctrl , какTextBox; 
            tb.AllowDrop = истина ; 
            tb.DragEnter + = (Sender, E) => 
            { 
                e.Effect = DragDropEffects.Link; // значок перетаскивания 
                 };

            tb.DragDrop + = (отправитель, е) => 
            { 
                ((TextBox) отправитель) .Text = ((System.Array) e.Data.GetData (DataFormats.FileDrop)) ПолучитьЗначение (. 0 ) .ToString (); 
            }; 
        } 
    } 
}

эффекты интерфейса

TestFilePathDrag

В-третьих, инструкции

MSDN: http://msdn.microsoft.com/zh-cn/library/system.windows.forms.dragdropeffects.aspx

1. метод

Когда перетаскивание эффектов, C # обеспечивает систематический метод DoDragDrop метод для реализации перетаскивания операция началась, которая определяется классом управления, прямо или косвенно, так как элементы управления является производным от класса Control, разработчик может в любом метод вызывает DoDragDrop визуализации компонент. Метод DoDragDrop использует следующий синтаксис:

общественный DragDropEffects DoDragDrop (данные объекта, DragDropEffects allowedEffects)

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

  allowedEffects: Один DragDropEffects перечисленного значений, эффект этого типа включает в себя операцию перетаскивания. значения перечисления DragDropEffects приведены в таблице 32.8.

  DragDropEffects лист 举 值:

  •     Все: Копирование из источника перетаскивания, данные удаляются, и выделите цель перетаскивания
  •     Копирование: копирование данных в цель перетаскивания
  •     Ссылка: перетаскивание связать источник данных с целью снижения
  •     Перемещение: перетащить мобильный источник данных к цели падения
  •     Ни одно: цель перетаскивания не принимает данные
  •     Свиток: о, чтобы начать прокатки в цели перетаскивания, или в настоящее время прокатки

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

DragDropEffects.Copy | DragDropEffects.None

2. событие

  C # обеспечивает перетаскивание системы событий, используется в сочетании с сопротивлением и капельным методом для достижения лучших результатов. Обычные события перетаскивания, как показано в таблице.

Событие на цели:

  •     DragEnter: Когда пользователи перетаскивать операцию в первый раз во время курсора мыши на элементы управления, приведет событие
  •     DragOver: Если мышь движется, но остается в пределах того же элемента управления, событие запуска DragOver
  •     DragDrop: происходит, когда операция перетаскивания завершена
  •     DragLeave: Если пользователь выходит из окна, событие вызвало DragLeave

Событие на источник:

  •     GiveFeedback: Происходит во время операции перетаскивания
  •     QueryContinueDrag: Во время операции перетаскивания, когда изменяется состояние кнопки клавиатуры или мыши приведет к QueryContinueDrag событию. QueryContinueDrag событие позволяет источник перетаскивания определить, следует ли отменить операцию перетаскивания

рекомендация

отwww.cnblogs.com/springsnow/p/11586293.html