Control.QueryContinueDrag Control.QueryContinueDrag Control.QueryContinueDrag Control.QueryContinueDrag Event

정의

끌어서 놓기 작업 중에 발생하며 끌기 소스가 끌어서 놓기 작업을 취소해야 할지를 결정하도록 합니다.Occurs during a drag-and-drop operation and enables the drag source to determine whether the drag-and-drop operation should be canceled.

public:
 event System::Windows::Forms::QueryContinueDragEventHandler ^ QueryContinueDrag;
public event System.Windows.Forms.QueryContinueDragEventHandler QueryContinueDrag;
member this.QueryContinueDrag : System.Windows.Forms.QueryContinueDragEventHandler 
Public Custom Event QueryContinueDrag As QueryContinueDragEventHandler 

예제

이 코드 발췌에서는 끌기 작업이 QueryContinueDrag 폼의 범위 밖으로 이동 하는 경우 이벤트를 사용 하 여 끌어서 놓기 작업을 취소 하는 방법을 보여 줍니다.This code excerpt demonstrates using the QueryContinueDrag event to cancel the drag-and-drop operation if the drag operation moves outside the bounds of the form. 참조 된 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

설명

QueryContinueDrag 이벤트는 끌어서 놓기 작업 중 키보드 또는 마우스 단추 상태가 변경 될 때 발생 합니다.The QueryContinueDrag event is raised when there is a change in the keyboard or mouse button state during a drag-and-drop operation. QueryContinueDrag 이벤트 끌기 소스가 끌어서 놓기 작업을 취소 해야 하는지 여부를 결정할 수 있습니다.The QueryContinueDrag event enables the drag source to determine whether the drag-and-drop operation should be canceled.

다음에서는 끌어서 놓기 작업이 발생하는 방식 및 시기에 대해 설명합니다.The following describes how and when events related to drag-and-drop operations are raised.

DoDragDrop 메서드는 현재 커서 위치에서 컨트롤을 확인 합니다.The DoDragDrop method determines the control under the current cursor location. 컨트롤의 유효한 놓기 대상 인지 확인 한 다음 확인 합니다.It then checks to see if the control is a valid drop target.

컨트롤이 유효한 놓기 대상에 있으면는 GiveFeedback 지정 끌어서 놓기 효과 사용 하 여 이벤트가 발생 합니다.If the control is a valid drop target, the GiveFeedback event is raised with the drag-and-drop effect specified. 끌어서 놓기 작업 결과 목록에 대한 자세한 내용은 DragDropEffects 열거형을 참조하십시오.For a list of drag-and-drop effects, see the DragDropEffects enumeration.

마우스 커서 위치, 키보드 상태 및 마우스 단추 상태의 변경 내용을 추적합니다.Changes in the mouse cursor position, keyboard state, and mouse button state are tracked.

  • 사용자가 창의 외부로 이동하면 DragLeave 이벤트가 발생합니다.If the user moves out of a window, the DragLeave event is raised.

  • 마우스를 다른 컨트롤로 가져가면 해당 컨트롤에 대한 DragEnter가 발생합니다.If the mouse enters another control, the DragEnter for that control is raised.

  • 마우스를 동일한 컨트롤 내에서 이동하면 DragOver 이벤트가 발생합니다.If the mouse moves but stays within the same control, the DragOver event is raised.

키보드 또는 마우스 단추 상태가 변경 될 경우는 QueryContinueDrag 의 값을 기준으로 작업을 취소 하려면 또는 이벤트가 발생 하 고 데이터를 놓을지 끌기를 계속할지 여부를 결정 합니다 Action 이벤트의 속성 QueryContinueDragEventArgs합니다.If there is a change in the keyboard or mouse button state, the QueryContinueDrag event is raised and determines whether to continue the drag, to drop the data, or to cancel the operation based on the value of the Action property of the event's QueryContinueDragEventArgs.

  • 경우 값 DragAction 됩니다 Continue, DragOver 이벤트는 작업을 계속 하려면 및 GiveFeedback 적절 한 시각적 피드백이 설정 될 수 있도록 새로운 효과 사용 하 여 이벤트가 발생 합니다.If the value of DragAction is Continue, the DragOver event is raised to continue the operation and the GiveFeedback event is raised with the new effect so appropriate visual feedback can be set. 유효한 끌어서 놓기 작업 결과 목록에 대한 자세한 내용은 DragDropEffects 열거형을 참조하십시오.For a list of valid drop effects, see the DragDropEffects enumeration.

    참고

    합니다 DragOverGiveFeedback 이벤트는 쌍을 이루고 있어서 마우스가 놓기 대상을 사용자 마우스의 위치에 대 한 최신 피드백이 제공 됩니다.The DragOver and GiveFeedback events are paired so that as the mouse moves across the drop target, the user is given the most up-to-date feedback on the mouse's position.

  • 경우 값 DragActionDrop놓기 결과 값이 소스로 반환은, 원본 애플리케이션은 원본 데이터에 대해 적절 한 작업을 수행할 수 있도록 예의 경우 데이터 잘라내기 작업이 이동 합니다.If the value of DragAction is Drop, the drop effect value is returned to the source, so the source application can perform the appropriate operation on the source data; for example, cut the data if the operation was a move.

  • 경우 값 DragAction 됩니다 CancelDragLeave 이벤트가 발생 합니다.If the value of DragAction is Cancel, the DragLeave event is raised.

기본적으로 QueryContinueDrag 이벤트 집합 ActionCancel 에서 DragAction ESC 키를 눌렀는지 및 설정 하는 경우 ActionDrop 에서 DragAction 왼쪽, 가운데 또는 오른쪽 마우스 단추를 누르는 경우.By default, the QueryContinueDrag event sets Action to Cancel in DragAction if the ESC key was pressed and sets Action to Drop in DragAction if the left, middle, or right mouse button is pressed.

이벤트 처리에 대한 자세한 내용은 이벤트 처리 및 발생 을 참조하십시오.For more information about handling events, see Handling and Raising Events.

적용 대상

추가 정보