QueryContinueDragEventHandler Делегат

Определение

Представляет метод, обрабатывающий событие QueryContinueDrag объекта Control.Represents the method that will handle the QueryContinueDrag event of a Control.

public delegate void QueryContinueDragEventHandler(System::Object ^ sender, QueryContinueDragEventArgs ^ e);
public delegate void QueryContinueDragEventHandler(object sender, QueryContinueDragEventArgs e);
type QueryContinueDragEventHandler = delegate of obj * QueryContinueDragEventArgs -> unit
Public Delegate Sub QueryContinueDragEventHandler(sender As Object, e As QueryContinueDragEventArgs)

Параметры

sender
Object

Источник события.The source of an event.

e
QueryContinueDragEventArgs

Объект QueryContinueDragEventArgs, содержащий данные события.A QueryContinueDragEventArgs that contains the event data.

Наследование
QueryContinueDragEventHandler

Примеры

В следующем примере показана операция перетаскивания между двумя ListBox элементами управления.The following example demonstrates a drag-and-drop operation between two ListBox controls. В примере вызывается DoDragDrop метод, когда начинается действие перетаскивания.The example calls the DoDragDrop method when the drag action starts. Действие перетаскивания начинается, если мышь переместилась больше, SystemInformation.DragSize чем от положения мыши MouseDown во время события.The drag action starts if the mouse has moved more than SystemInformation.DragSize from the mouse location during the MouseDown event. Метод используется для определения индекса элемента, перетаскиваемого MouseDown во время события. IndexFromPointThe IndexFromPoint method is used to determine the index of the item to drag during the MouseDown event.

В примере также демонстрируется использование пользовательских курсоров для операции перетаскивания.The example also demonstrates using custom cursors for the drag-and-drop operation. В этом примере предполагается, что два 3dwarro.cur файла 3dwno.curкурсора и существуют в каталоге приложения для настраиваемых курсоров перетаскивания и без перетаскивания соответственно.The example assumes that two cursor files, 3dwarro.cur and 3dwno.cur, exist in the application directory, for the custom drag and no-drop cursors, respectively. Если флажок установлен, UseCustomCursorsCheck CheckBox будут использоваться пользовательские курсоры.The custom cursors will be used if the UseCustomCursorsCheckCheckBox is checked. Пользовательские курсоры задаются в GiveFeedback обработчике событий.The custom cursors are set in the GiveFeedback event handler.

Состояние клавиатуры вычисляется в DragOver обработчике событий справа ListBox, чтобы определить, какая операция перетаскивания будет основываться на состоянии клавиш Shift, CTRL, Alt или CTRL + ALT.The keyboard state is evaluated in the DragOver event handler for the right ListBox, to determine what the drag operation will be based upon state of the SHIFT, CTRL, ALT, or CTRL+ALT keys. Место в месте, ListBox куда будет происходить удаление, также определяется DragOver во время события.The location in the ListBox where the drop would occur is also determined during the DragOver event. Если данные для удаления не Stringявляются, то DragEventArgs.Effect устанавливается в DragDropEffects.Noneзначение.If the data to drop is not a String, then the DragEventArgs.Effect is set to DragDropEffects.None. Наконец, состояние удаления отображается в DropLocationLabel. LabelFinally, the status of the drop is displayed in the DropLocationLabelLabel.

Данные, которые ListBox нужно удалить справа, определяются DragDrop в обработчике событий, а String значение добавляется в соответствующее место в. ListBoxThe data to drop for the right ListBox is determined in the DragDrop event handler and the String value is added at the appropriate place in the ListBox. Если операция перетаскивания выходит за границы формы, операция перетаскивания отменяется в QueryContinueDrag обработчике событий.If the drag operation moves outside the bounds of the form, then the drag-and-drop operation is canceled in the QueryContinueDrag event handler.

Этот фрагмент кода демонстрирует использование QueryContinueDragEventHandler делегата QueryContinueDrag с событием.This code excerpt demonstrates using the QueryContinueDragEventHandler delegate with the QueryContinueDrag event. Полный пример DoDragDrop кода см. в описании метода.See the DoDragDrop method for the complete code example.

void ListDragSource_QueryContinueDrag( Object^ sender, System::Windows::Forms::QueryContinueDragEventArgs^ e )
{
   // Cancel the drag if the mouse moves off the form.
   ListBox^ lb = dynamic_cast<ListBox^>(sender);
   if ( lb != nullptr )
   {
      Form^ f = lb->FindForm();

      // Cancel the drag if the mouse moves off the form. The screenOffset
      // takes into account any desktop bands that may be at the top or left
      // side of the screen.
      if ( ((Control::MousePosition.X - screenOffset.X) < f->DesktopBounds.Left) || ((Control::MousePosition.X - screenOffset.X) > f->DesktopBounds.Right) || ((Control::MousePosition.Y - screenOffset.Y) < f->DesktopBounds.Top) || ((Control::MousePosition.Y - screenOffset.Y) > f->DesktopBounds.Bottom) )
      {
         e->Action = DragAction::Cancel;
      }
   }
}
private void ListDragSource_QueryContinueDrag(object sender, System.Windows.Forms.QueryContinueDragEventArgs e) {
    // Cancel the drag if the mouse moves off the form.
    ListBox lb = sender as ListBox;

    if (lb != null) {

        Form f = lb.FindForm();

        // Cancel the drag if the mouse moves off the form. The screenOffset
        // takes into account any desktop bands that may be at the top or left
        // side of the screen.
        if (((Control.MousePosition.X - screenOffset.X) < f.DesktopBounds.Left) ||
            ((Control.MousePosition.X - screenOffset.X) > f.DesktopBounds.Right) ||
            ((Control.MousePosition.Y - screenOffset.Y) < f.DesktopBounds.Top) ||
            ((Control.MousePosition.Y - screenOffset.Y) > f.DesktopBounds.Bottom)) {

            e.Action = DragAction.Cancel;
        }
    }
}
Private Sub ListDragSource_QueryContinueDrag(ByVal sender As Object, ByVal e As QueryContinueDragEventArgs) Handles ListDragSource.QueryContinueDrag
    ' Cancel the drag if the mouse moves off the form.
    Dim lb as ListBox = CType(sender, System.Windows.Forms.ListBox)

    If (lb isNot nothing) Then

        Dim f as Form = lb.FindForm()

        ' Cancel the drag if the mouse moves off the form. The screenOffset
        ' takes into account any desktop bands that may be at the top or left
        ' side of the screen.
        If (((Control.MousePosition.X - screenOffset.X) < f.DesktopBounds.Left) Or _
            ((Control.MousePosition.X - screenOffset.X) > f.DesktopBounds.Right) Or _
            ((Control.MousePosition.Y - screenOffset.Y) < f.DesktopBounds.Top) Or _
            ((Control.MousePosition.Y - screenOffset.Y) > f.DesktopBounds.Bottom)) Then

            e.Action = DragAction.Cancel
        End If
    End if
End Sub

Комментарии

При создании делегата QueryContinueDragEventHandler необходимо указать метод, обрабатывающий событие.When you create a QueryContinueDragEventHandler delegate, you identify the method that will handle the event. Чтобы связать событие с обработчиком событий, нужно добавить в событие экземпляр делегата.To associate the event with your event handler, add an instance of the delegate to the event. Обработчик событий вызывается всякий раз, когда происходит событие, если делегат не удален.The event handler is called whenever the event occurs, unless you remove the delegate. Дополнительные сведения об обработке событий с помощью делегатов см. в разделе обработка и вызов событий.For more information about handling events with delegates, see Handling and Raising Events.

Методы расширения

GetMethodInfo(Delegate)

Получает объект, представляющий метод, представленный указанным делегатом.Gets an object that represents the method represented by the specified delegate.

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

Дополнительно