QueryContinueDragEventHandler Delegera
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Representerar den metod som ska hantera QueryContinueDrag händelsen för en Control.
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)
Parametrar
- sender
- Object
Källan till en händelse.
En QueryContinueDragEventArgs som innehåller händelsedata.
Exempel
I följande exempel visas en dra och släpp-åtgärd mellan två ListBox kontroller. Exemplet anropar DoDragDrop metoden när dragåtgärden startar. Dragåtgärden startar om musen har flyttats mer än SystemInformation.DragSize från musplatsen under MouseDown händelsen. Metoden IndexFromPoint används för att fastställa indexet för objektet som ska dras under MouseDown händelsen.
Exemplet visar också hur du använder anpassade markörer för dra och släpp-åtgärden. Exemplet förutsätter att det finns två markörfiler 3dwarro.cur , och 3dwno.cur, i programkatalogen, för de anpassade dra- respektive no-drop-markörer. De anpassade markören används om den UseCustomCursorsCheckCheckBox är markerad. De anpassade markörer anges i GiveFeedback händelsehanteraren.
Tangentbordstillståndet DragOver utvärderas i händelsehanteraren för höger ListBox, för att avgöra vilken dragåtgärd som ska baseras på tillståndet för tangenterna SKIFT, CTRL, ALT eller CTRL+ALT. Platsen där ListBox droppen skulle inträffa bestäms också under DragOver händelsen. Om de data som ska tas bort inte är en String, är den inställd på DragEventArgs.EffectDragDropEffects.None. Slutligen visas status för släppet i DropLocationLabelLabel.
De data som ska tas bort för höger ListBox bestäms i DragDrop händelsehanteraren och String värdet läggs till på rätt plats i ListBox. Om dragåtgärden flyttas utanför formulärets gränser avbryts dra och släpp-åtgärden i QueryContinueDrag händelsehanteraren.
Det här kodutdraget visar hur du använder ombudet QueryContinueDragEventHandlerQueryContinueDrag med händelsen. DoDragDrop Se metoden för det fullständiga kodexemplet.
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
Kommentarer
När du skapar ett QueryContinueDragEventHandler ombud identifierar du den metod som ska hantera händelsen. Om du vill associera händelsen med händelsehanteraren lägger du till en instans av ombudet till händelsen. Händelsehanteraren anropas när händelsen inträffar, såvida du inte tar bort ombudet. Mer information om hur du hanterar händelser med ombud finns i Hantera och höja händelser.
Tilläggsmetoder
| Name | Description |
|---|---|
| GetMethodInfo(Delegate) |
Hämtar ett objekt som representerar den metod som representeras av det angivna ombudet. |