Поделиться через


DragDrop.DoDragDrop(DependencyObject, Object, DragDropEffects) Метод

Определение

Инициирует операцию перетаскивания.

public:
 static System::Windows::DragDropEffects DoDragDrop(System::Windows::DependencyObject ^ dragSource, System::Object ^ data, System::Windows::DragDropEffects allowedEffects);
[System.Security.SecurityCritical]
public static System.Windows.DragDropEffects DoDragDrop (System.Windows.DependencyObject dragSource, object data, System.Windows.DragDropEffects allowedEffects);
public static System.Windows.DragDropEffects DoDragDrop (System.Windows.DependencyObject dragSource, object data, System.Windows.DragDropEffects allowedEffects);
[<System.Security.SecurityCritical>]
static member DoDragDrop : System.Windows.DependencyObject * obj * System.Windows.DragDropEffects -> System.Windows.DragDropEffects
static member DoDragDrop : System.Windows.DependencyObject * obj * System.Windows.DragDropEffects -> System.Windows.DragDropEffects
Public Shared Function DoDragDrop (dragSource As DependencyObject, data As Object, allowedEffects As DragDropEffects) As DragDropEffects

Параметры

dragSource
DependencyObject

Ссылка на объект зависимости, являющийся источником перетаскиваемых данных.

data
Object

Объект данных, содержащий перетаскиваемые данные.

allowedEffects
DragDropEffects

Одно из значений DragDropEffects, которое указывает разрешенные эффекты операции перетаскивания.

Возвращаемое значение

Одно из значений DragDropEffects, которое указывает конечный результат выполнения операции перетаскивания.

Атрибуты

Исключения

Параметр dragSource или data имеет значение null.

Примеры

В следующем примере показано, как инициировать операцию перетаскивания в обработчике событий MouseMove элемента Ellipse, чтобы сделать его источником перетаскивания. Передаваемые данные представляют собой строковое представление свойства эллипса Fill . Данные передаются в метод в DoDragDrop виде строки и автоматически упаковываются в DataObject.

private void ellipse_MouseMove(object sender, MouseEventArgs e)
{
    Ellipse ellipse = sender as Ellipse;
    if (ellipse != null && e.LeftButton == MouseButtonState.Pressed)
    {
        DragDrop.DoDragDrop( ellipse,
                             ellipse.Fill.ToString(),
                             DragDropEffects.Copy);
    }
}
Private Sub Ellipse_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Input.MouseEventArgs)
    Dim ellipse = TryCast(sender, Ellipse)
    If ellipse IsNot Nothing AndAlso e.LeftButton = MouseButtonState.Pressed Then
        DragDrop.DoDragDrop(ellipse, ellipse.Fill.ToString(), DragDropEffects.Copy)
    End If
End Sub

Комментарии

Ваше приложение должно определить, когда происходит перетаскивание, а затем инициировать операцию перетаскивания. Как правило, это происходит, когда MouseDown последовательность событий и MouseMove происходит над перетаскиваемого элемента. Вы инициируете операцию перетаскивания, вызывая статический DoDragDrop метод и передавая ему переданные данные. Метод DoDragDrop будет автоматически включать данные в DataObject при необходимости. Для большего контроля над форматом данных можно включать данные в DataObject перед их передачей в метод DoDragDrop.

Значение, возвращаемое методом DoDragDrop , является значением свойства, заданного DragEventArgs.Effects в обработчике событий целевого Drop объекта удаления. Если возвращаемое значение не соответствует одному из указанных allowedEffects в вызове DoDragDrop, операция перетаскивания не выполняется.

Применяется к