QueryContinueDragEventHandler 代理人
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
Controlの QueryContinueDrag イベントを処理するメソッドを表します。
public delegate void QueryContinueDragEventHandler(System::Object ^ sender, QueryContinueDragEventArgs ^ e);
public delegate void QueryContinueDragEventHandler(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
イベントのソース。
イベント データを含む QueryContinueDragEventArgs。
例
次の例では、2 つの ListBox コントロール間のドラッグ アンド ドロップ操作を示します。 この例では、ドラッグ アクションの開始時に DoDragDrop メソッドを呼び出します。 ドラッグ 操作は、MouseDown イベント中にマウスの位置からマウスが SystemInformation.DragSize 以上移動した場合に開始されます。
IndexFromPoint メソッドは、MouseDown
イベント中にドラッグする項目のインデックスを決定するために使用されます。
この例では、ドラッグ アンド ドロップ操作にカスタム カーソルを使用する方法も示します。 この例では、カスタム ドラッグ カーソルとドロップなしカーソルの 2 つのカーソル ファイル (3dwarro.cur
と 3dwno.cur
) がアプリケーション ディレクトリに存在することを前提としています。
UseCustomCursorsCheck
CheckBox がチェックされている場合は、カスタム カーソルが使用されます。 カスタム カーソルは、GiveFeedback イベント ハンドラーで設定されます。
キーボードの状態は、右 ListBox
の DragOver イベント ハンドラーで評価され、Shift キー、Ctrl キー、Alt キー、または Ctrl + Alt キーの状態に基づいてドラッグ操作を決定します。 ドロップが発生する ListBox
内の場所も、DragOver
イベント中に決定されます。 削除するデータが String
でない場合、DragEventArgs.Effect は DragDropEffects.Noneに設定されます。 最後に、ドロップの状態が DropLocationLabel
Labelに表示されます。
適切な ListBox
に対して削除するデータは、DragDrop イベント ハンドラーで決定され、String
値は ListBox
の適切な場所に追加されます。 ドラッグ操作がフォームの境界外に移動すると、QueryContinueDrag イベント ハンドラーでドラッグ アンド ドロップ操作が取り消されます。
このコードの抜粋は、QueryContinueDrag イベントで QueryContinueDragEventHandler デリゲートを使用する方法を示しています。 完全なコード例については、DoDragDrop メソッドを参照してください。
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, 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, 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 デリゲートを作成するときは、イベントを処理するメソッドを識別します。 イベントをイベント ハンドラーに関連付けるには、デリゲートのインスタンスをイベントに追加します。 デリゲートを削除しない限り、イベントが発生するたびにイベント ハンドラーが呼び出されます。 デリゲートを使用したイベントの処理の詳細については、「処理とイベントの発生」を参照してください。
拡張メソッド
GetMethodInfo(Delegate) |
指定したデリゲートによって表されるメソッドを表すオブジェクトを取得します。 |
適用対象
こちらもご覧ください
.NET