Control.QueryContinueDrag イベントとは? わかりやすく解説

Weblio 辞書 > コンピュータ > .NET Framework クラス ライブラリ リファレンス > Control.QueryContinueDrag イベントの意味・解説 

Control.QueryContinueDrag イベント

ドラッグ アンド ドロップ操作中に発生し、ドラッグ ソースがドラッグ アンド ドロップ操作をキャンセルする必要があるかどうかを決定できるようにします。

名前空間: System.Windows.Forms
アセンブリ: System.Windows.Forms (system.windows.forms.dll 内)
構文構文

Public Event QueryContinueDrag As
 QueryContinueDragEventHandler
Dim instance As Control
Dim handler As QueryContinueDragEventHandler

AddHandler instance.QueryContinueDrag, handler
public event QueryContinueDragEventHandler QueryContinueDrag
public:
event QueryContinueDragEventHandler^ QueryContinueDrag {
    void add (QueryContinueDragEventHandler^ value);
    void remove (QueryContinueDragEventHandler^ value);
}
/** @event */
public void add_QueryContinueDrag (QueryContinueDragEventHandler
 value)

/** @event */
public void remove_QueryContinueDrag (QueryContinueDragEventHandler
 value)
JScript では、イベントは使用できますが、新規に宣言することはできません。
解説解説

QueryContinueDrag イベントは、ドラッグ アンド ドロップ操作中、キーボードまたはマウス ボタンの状態に変更があったときに発生します。QueryContinueDrag イベントにより、ドラッグ ソースはドラッグ アンド ドロップ操作をキャンセルする必要があるかどうかを判断できます。

ドラッグ アンド ドロップ操作関連のイベントがどのように、いつ発生するかについて次に示します。

DoDragDrop メソッドは、現在のカーソル位置に従ってコントロールを判別します。次に、コントロールが有効なドロップ ターゲットかどうかを確認します。

コントロールが有効なドロップ ターゲットの場合、指定したドラッグ アンド ドロップの効果が付いた状態で GiveFeedback イベントが発生します。ドラッグ アンド ドロップ効果の一覧については、DragDropEffects 列挙体を参照してください。

マウス カーソルの位置、キーボードの状態、およびマウス ボタンの状態の変更が監視されます。

キーボードまたはマウス ボタンの状態に変更があった場合、QueryContinueDrag イベントが生成され、このイベントの QueryContinueDragEventArgs の Action プロパティの値に応じて、ドラッグを継続するか、データをドロップするか、操作をキャンセルするかが判断されます。

既定では、Esc キーが押された場合、QueryContinueDrag イベントは DragAction で Action を Cancel に設定します。また、マウスの左ボタン、中央ボタン、または右ボタンが押された場合は、DragAction で Action を Drop に設定します。

イベント処理の詳細については、「イベントの利用」を参照してください。

使用例使用例

2 つの ListBox コントロールの間でドラッグ アンド ドロップ操作を実行するコード例を次に示します。この例では、ドラッグ アクションが開始したときに DoDragDrop メソッドが呼び出されます。ドラッグ操作は、MouseDown イベント実行中のマウス位置から SystemInformation.DragSize を超えてマウスが移動したときに開始されます。IndexFromPoint メソッドは、MouseDown イベントで、ドラッグする項目のインデックスを判別するために使用します。

この例では、ドラッグ アンド ドロップ操作でカスタム カーソルを使用する方法についても示します。この例では、2 つのカーソル ファイル (3dwarro.cur と 3dwno.cur) がアプリケーション ディレクトリ内に存在している必要があります。なお、それぞれのファイルはドラッグ用のカスタム カーソルとドロップなしのカスタム カーソルを表します。カスタム カーソルは、UseCustomCursorsCheckCheckBox がオンになっている場合に使用されます。カスタム カーソルは、GiveFeedback イベント ハンドラで設定されます。

キーボードの状態は、右側の ListBox の DragOver イベント ハンドラで評価されます。ドラッグ操作の内容は、Shift キー、Ctrl キー、Alt キー、または Ctrl + Alt キーの状態によって決まります。ドロップが発生する ListBox 内の位置は、DragOver イベント時にも判定されます。ドロップするデータが String でない場合は、DragEventArgs.Effect が DragDropEffects で None に設定されます。最後に、ドロップのステータスが DropLocationLabelLabel に表示されます。

右側の ListBox にドロップするデータは、DragDrop イベント ハンドラで判定されます。また、String 値が ListBox の該当する場所に追加されます。ドラッグ操作がフォームの範囲を超えて移動した場合、ドラッグ アンド ドロップ操作は QueryContinueDrag イベント ハンドラでキャンセルされます。

QueryContinueDrag イベントの使用方法を次のコード例に示します。コード例全体については、DoDragDrop メソッドのトピックを参照してください。

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 Not (lb is 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
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;
        }
    }
}
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 = (ListBox)sender;

    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.get_MousePosition().get_X() - screenOffset.get_X()
 
            < f.get_DesktopBounds().get_Left() 
            || Control.get_MousePosition().get_X() 
            - screenOffset.get_X() > f.get_DesktopBounds().get_Right() 
            || Control.get_MousePosition().get_Y() - screenOffset.get_Y() 
            < f.get_DesktopBounds().get_Top() 
            || Control.get_MousePosition().get_Y() - screenOffset.get_Y() 
            > f.get_DesktopBounds().get_Bottom()) {
            e.set_Action(DragAction.Cancel);
        }
    }
} //listDragSource_QueryContinueDrag
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照


このページでは「.NET Framework クラス ライブラリ リファレンス」からControl.QueryContinueDrag イベントを検索した結果を表示しています。
Weblioに収録されているすべての辞書からControl.QueryContinueDrag イベントを検索する場合は、下記のリンクをクリックしてください。
 全ての辞書からControl.QueryContinueDrag イベント を検索

英和和英テキスト翻訳

英語⇒日本語日本語⇒英語

辞書ショートカット

すべての辞書の索引

Control.QueryContinueDrag イベントのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



Control.QueryContinueDrag イベントのページの著作権

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2026 Microsoft.All rights reserved.

©2026 GRAS Group, Inc.RSS