# RadDragDropService

**RadDragDropService** represents a service that manages drag and drop actions if the **AllowDragDrop** property for the respective control is set to *true*. While the dragged object should implement the **ISupportDrag** interface, the drop object should implement the **ISupportDrop** interface. The service exposes the following properties:

* **ValidCursor**: Gets or sets the cursor to be used when a valid drop target is hit-tested.

* **InvalidCursor**: Gets or sets the cursor to be used when a valid drop target is hit-tested.

* **UseDefaultPreview**: Determines whether a default preview is generated for a **ISupportDrag** instance if its **GetPreview** method returns null.

* **DropTarget**: Gets current drop target, where the mouse cursor points.

* **DropLocation**: Gets the current drop location in the context of the current target.

There are several events that control the whole drag and drop operation:

* **PreviewDragStart**: Fires when the drag and drop operation is about to be started. In the **PreviewDragStartEventArgs** you have access to the **DragInstance**. You can control whether the service should be started by the **CanStart** argument.

* **Starting**: Fires when the drag and drop service is being started. You can cancel it by setting the **Cancel** argument to **true**.

* **Started**: Fires when the drag and drop service is started.

* **PreviewDragHint**: Fires when the drag and drop operation is successfully started and the drag hint is going to be created. The PreviewDragHintEventArgs.**UseDefaultHint** property controls whether the default hint will be displayed. If you set this argument to *false* you can specify the drag hint by setting the **DragHint** property to the desired image. You have access to the **DragInstance** as well.

> caption Figure 1: Custom DragHint

![Telerik UI for WinForms RadDragDropService drag-and-drop operation](https://www.telerik.com/products/winforms/documentation/assets/04ad7e4c8930f8c98b39ef9fd1d7d429/tpf-raddragdropservice001.png)

* **PreviewDropTarget**: Fires when you have a drop target. In the **PreviewDropTargetEventArgs** you have access to the **DragInstance** and **HitTarget**. It is possible to change the drop target by the PreviewDropTargetEventArgs.**DropTarget** property. This target will be used for the **PreviewDragOver** event.

* **PreviewDragOver**:  It allows you to control on what targets the item being dragged can be dropped on by the RadDragOverEventArgs.**CanDrop**. The **RadDragOverEventArgs** gives you access to the dragged  and the target item.

* **PreviewDragDrop**: Fires when the user releases the mouse in order to end the drag and drop operation. It allows you to get a handle on all the aspects of the drag and drop operation, the source (drag) control, the destination (target) control, as well as the item being dragged. This is where we will initiate the actual physical move of the item(s) from one control to the target control.

* **Stopping**: Fires when the drag and drop service is being stopped. You can cancel it by setting the **Cancel** argument to **true**.

* **Stopped**: Fires when the drag and drop service is stopped.

You can find in the table below the **RadDragDropService**'s derivatives and the respective **RadControl** for which each service is applicable:

| RadControl                     | RadDragDropService                                                                                                                                                                               |
| ------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **RadScheduler**               | [AppointmentDraggingBehavior](https://www.telerik.com/products/winforms/documentation/controls/scheduler/drag-and-drop/appointmentdraggingbehavior)                                              |
| **RadListView**                | [ListViewDragDropService](https://www.telerik.com/products/winforms/documentation/controls/listview/drag-and-drop/listviewdragdropservice)                                                       |
| **RadListView** in DetailsView | [DetailListViewDragDropService](https://www.telerik.com/products/winforms/documentation/controls/listview/drag-and-drop/detaillistviewdragdropservice)                                           |
| **RadGanttView**               | [GanttViewDragDropService](https://www.telerik.com/products/winforms/documentation/controls/ganttview/drag-and-drop/ganttviewdragdropservice)                                                    |
| **RadLayoutControl**           | [LayoutControlDragDropService](https://www.telerik.com/products/winforms/documentation/controls/layoutcontrol/drag-and-drop/layoutcontroldragdropservice)                                        |
| **RadListControl**             | [ListControlDragDropService](https://www.telerik.com/products/winforms/documentation/controls/dropdown-listcontrol-and-checkeddropdownlist/listcontrol/drag-and-drop/listcontroldragdropservice) |
| **RadPivotFieldList**          | [PivotFieldListDragDropService](https://www.telerik.com/products/winforms/documentation/controls/pivotgrid/drag-and-drop/pivotfieldlistdragdropservice)                                          |
| **RadPivotGrid**               | [PivotGridDragDropService](https://www.telerik.com/products/winforms/documentation/controls/pivotgrid/drag-and-drop/pivotgriddragdropservice)                                                    |
| **RadGridView**                | [RadGridViewDragDropService](https://www.telerik.com/products/winforms/documentation/controls/gridview/features/drag-and-drop/radgridviewdragdropservice)                                        |
| **RadPageView**                | [RadPageViewDragDropService](https://www.telerik.com/products/winforms/documentation/controls/pageview/drag-and-drop/radpageviewdragdropservice)                                                 |
| **RadPanorama**                | [TileDragDropService](https://www.telerik.com/products/winforms/documentation/controls/panorama/drad-and-drop/tiledragdropservice)                                                               |
| **RadTreeView**                | [TreeViewDragDropService](https://www.telerik.com/products/winforms/documentation/controls/treeview/drag-and-drop/treeviewdragdropservice)                                                       |
| **RadTaskBoard**               | [RadTaskBoardDragDropService](https://www.telerik.com/products/winforms/documentation/controls/task-board/task-board-drag-drop)                                                                  |
