Control.QueryContinueDrag Esemény
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
A húzási művelet során történik, és lehetővé teszi a húzási forrás számára annak megállapítását, hogy a húzási műveletet le kell-e mondani.
public:
event System::Windows::Forms::QueryContinueDragEventHandler ^ QueryContinueDrag;
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
Eseménytípus
Példák
Ez a kódrészlet bemutatja, hogy az QueryContinueDrag esemény használatával megszakítja a húzási műveletet, ha a húzási művelet az űrlap határain kívülre kerül. Tekintse meg a DoDragDrop teljes kód példájának metódusát.
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
Megjegyzések
Az QueryContinueDrag esemény akkor jön létre, ha egy húzással végzett művelet során megváltozik a billentyűzet vagy az egérgomb állapota. Az QueryContinueDrag esemény lehetővé teszi a húzási forrás számára annak megállapítását, hogy a húzási műveletet le kell-e mondani.
Az alábbiakban azt ismertetjük, hogy a húzással és húzással kapcsolatos események hogyan és mikor lépnek fel.
A DoDragDrop metódus az aktuális kurzor helye alatti vezérlőt határozza meg. Ezután ellenőrzi, hogy a vezérlő érvényes dobási cél-e.
Ha a vezérlő érvényes dobási cél, az GiveFeedback eseményt a megadott húzási effektussal emeli ki. A húzási effektusok listáját az DragDropEffects enumerálásban találja.
A rendszer nyomon követi az egérmutató pozíciójának, a billentyűzet állapotának és az egérgomb állapotának változásait.
Ha a felhasználó kilép egy ablakból, az DragLeave esemény létrejön.
Ha az egér egy másik vezérlőt ad meg, az DragEnter adott vezérlő neve fel lesz emelve.
Ha az egér mozog, de ugyanabban a vezérlőben marad, az DragOver esemény fel lesz emelve.
Ha a billentyűzet vagy az egérgomb állapota megváltozik, a rendszer elindítja az QueryContinueDrag eseményt, és meghatározza, hogy folytatja-e a húzást, elveti-e az adatokat, vagy megszakítja-e a műveletet az Action esemény QueryContinueDragEventArgstulajdonságának értéke alapján.
Ha az érték DragAction az, az
Continueesemény a művelet folytatásához lesz emelve, és az DragOver eseményt az új effektussal emeli ki, így megfelelő vizuális GiveFeedbackvisszajelzés állítható be. Az érvényes effektusok listáját az DragDropEffects enumerálásban találja.Note
Az DragOver és GiveFeedback az események párosítása úgy történik, hogy az egér a dobási célon áthaladva a lehető legtöbb up-to-date visszajelzést kapjon az egér pozíciójáról.
Ha az érték DragAction az
Drop, akkor a drop effect értéke vissza lesz adva a forrásnak, így a forrásalkalmazás végrehajthatja a megfelelő műveletet a forrásadatokon, például kivághatja az adatokat, ha a művelet áthelyezés volt.Ha az érték DragAction az
Cancel, az DragLeave esemény fel lesz emelve.
Alapértelmezés szerint az QueryContinueDrag esemény be van kapcsolva ActionCancelDragAction, ha az ESC billentyűt lenyomták, és be van kapcsolva ActionDropDragAction, ha a bal, középső vagy jobb egérgombot lenyomja.
Az események kezelésével kapcsolatos további információkért lásd : Események kezelése és emelése.