DragDrop.DragEnter Присоединенное событие
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Возникает при перетаскивании объекта в границы элемента, выступающего в качестве конечного расположения сброса.
see AddDragEnterHandler, and RemoveDragEnterHandler
see AddDragEnterHandler, and RemoveDragEnterHandler
see AddDragEnterHandler, and RemoveDragEnterHandler
Примеры
В следующем примере показан обработчик событий DragEnter для элемента Ellipse. Этот код выполняет предварительный просмотр эффектов операции перетаскивания путем сохранения текущей кисти Fill. Затем он проверяет, содержит ли DataObject перетаскиваемый по эллипсу строковые данные, которые можно преобразовать в Brush. Если это так, то к эллипсу применяется объект Brush. Это изменение отменяется в обработчике событий DragLeave. Если данные невозможно преобразовать в Brush, никакие действия не выполняются.
private Brush _previousFill = null;
private void ellipse_DragEnter(object sender, DragEventArgs e)
{
Ellipse ellipse = sender as Ellipse;
if (ellipse != null)
{
// Save the current Fill brush so that you can revert back to this value in DragLeave.
_previousFill = ellipse.Fill;
// If the DataObject contains string data, extract it.
if (e.Data.GetDataPresent(DataFormats.StringFormat))
{
string dataString = (string)e.Data.GetData(DataFormats.StringFormat);
// If the string can be converted into a Brush, convert it.
BrushConverter converter = new BrushConverter();
if (converter.IsValid(dataString))
{
Brush newFill = (Brush)converter.ConvertFromString(dataString);
ellipse.Fill = newFill;
}
}
}
}
Private _previousFill As Brush = Nothing
Private Sub Ellipse_DragEnter(ByVal sender As System.Object, ByVal e As System.Windows.DragEventArgs)
Dim ellipse = TryCast(sender, Ellipse)
If ellipse IsNot Nothing Then
' Save the current Fill brush so that you can revert back to this value in DragLeave.
_previousFill = ellipse.Fill
' If the DataObject contains string data, extract it.
If e.Data.GetDataPresent(DataFormats.StringFormat) Then
Dim dataString = e.Data.GetData(DataFormats.StringFormat)
' If the string can be converted into a Brush, convert it.
Dim converter As New BrushConverter()
If converter.IsValid(dataString) Then
Dim newFill As Brush = CType(converter.ConvertFromString(dataString), Brush)
ellipse.Fill = newFill
End If
End If
End If
End Sub
Комментарии
Это событие возникает один раз при каждом перетаскивании объекта в границы элемента, выступающего в качестве целевого объекта перетаскивания. Это событие не возникает, если свойство элемента AllowDrop имеет значение false
.
Обработка этого события необязательна для целевого объекта перетаскивания и не требуется для всех сценариев перетаскивания. Обычно вы обрабатываете это событие, чтобы обеспечить предварительный просмотр эффектов операции перетаскивания, если это требуется для вашего приложения. Не устанавливайте свойство DragEventArgs.Effects в событии DragEnter, так как оно будет переопределено в событии DragOver.
Сведения о маршрутизируемом событии
Поле идентификатора | DragEnterEvent |
Стратегия маршрутизации | Восходящей |
Делегат | DragEventHandler |
Соответствующее событие туннелирования — PreviewDragEnter.