Control.QueryContinueDrag 이벤트

정의

끌어서 놓기 작업 중에 발생하며 끌기 소스가 끌어서 놓기 작업을 취소해야 할지를 결정하도록 합니다.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 이벤트가 발생 하 고, 이벤트의 QueryContinueDragEventArgs에 대 한 Action 속성 값에 따라 끌기를 계속할지, 데이터를 삭제할지 또는 작업을 취소할지를 결정 합니다.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 값이 Cancel경우 DragLeave 이벤트가 발생 합니다.If the value of DragAction is Cancel, the DragLeave event is raised.

기본적으로 QueryContinueDrag 이벤트는 ESC 키를 눌렀을 때 DragAction Cancel Action를 설정 하 고 왼쪽, 가운데 또는 오른쪽 마우스 단추를 누른 경우 ActionDrop를 설정 합니다.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.

적용 대상

추가 정보