Control.GiveFeedback 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.
Húzási művelet során következik be.
public:
event System::Windows::Forms::GiveFeedbackEventHandler ^ GiveFeedback;
public event System.Windows.Forms.GiveFeedbackEventHandler GiveFeedback;
public event System.Windows.Forms.GiveFeedbackEventHandler? GiveFeedback;
member this.GiveFeedback : System.Windows.Forms.GiveFeedbackEventHandler
Public Custom Event GiveFeedback As GiveFeedbackEventHandler
Eseménytípus
Példák
Az alábbi példakód két ListBox vezérlő közötti húzási műveletet mutat be. A példa meghívja a metódust az DoDragDrop húzási művelet indításakor. A húzási művelet akkor indul el, ha az egér az esemény során több helyről mozdult el, mint SystemInformation.DragSize az MouseDown egér helyére. A IndexFromPoint metódus az esemény során MouseDown húzandó elem indexének meghatározására szolgál.
A példa azt is bemutatja, hogy egyéni kurzorokat használ a húzási művelethez. A példához két kurzorfájlra van szükség, 3dwarro.cur és 3dwno.curaz alkalmazáskönyvtárban az egyéni húzáshoz és a kurzorok elcsúszásához. A program az egyéni kurzorokat fogja használni, ha a UseCustomCursorsCheckCheckBox kurzort bejelölte. Az egyéni kurzorok az GiveFeedback eseménykezelőben vannak beállítva.
A billentyűzet állapotának kiértékelése a DragOver jobb oldali ListBoxeseménykezelőben történik annak meghatározásához, hogy a húzási művelet a SHIFT, a CTRL, az ALT vagy a CTRL+ALT billentyűk állapotán alapuljon. Az esemény során ListBox annak a helynek a DragOver helyét is meghatározza, ahol az esés bekövetkezne. Ha az elejtendő adatok nem egyString, akkor az DragEventArgs.Effect érték a Nonekövetkezőre van állítvaDragDropEffects: . Végül az elvetés állapota megjelenik a DropLocationLabelLabel.
A jobb oldali ListBox ledobandó adatokat az DragDrop eseménykezelő határozza meg, és az String érték a megfelelő helyen lesz hozzáadva a ListBox. Ha az húzási művelet az űrlap határain kívülre kerül, az húzási művelet megszakad az QueryContinueDrag eseménykezelőben.
Ez a kódrészlet az esemény használatát GiveFeedback mutatja be. Tekintse meg a DoDragDrop teljes kód példájának metódusát.
void ListDragSource_GiveFeedback( Object^ /*sender*/, System::Windows::Forms::GiveFeedbackEventArgs^ e )
{
// Use custom cursors if the check box is checked.
if ( UseCustomCursorsCheck->Checked )
{
// Sets the custom cursor based upon the effect.
e->UseDefaultCursors = false;
if ( (e->Effect & DragDropEffects::Move) == DragDropEffects::Move )
::Cursor::Current = MyNormalCursor;
else
::Cursor::Current = MyNoDropCursor;
}
}
private void ListDragSource_GiveFeedback(object sender, GiveFeedbackEventArgs e)
{
// Use custom cursors if the check box is checked.
if (UseCustomCursorsCheck.Checked)
{
// Sets the custom cursor based upon the effect.
e.UseDefaultCursors = false;
if ((e.Effect & DragDropEffects.Move) == DragDropEffects.Move)
Cursor.Current = MyNormalCursor;
else
Cursor.Current = MyNoDropCursor;
}
}
Private Sub ListDragSource_GiveFeedback(ByVal sender As Object, ByVal e As GiveFeedbackEventArgs) Handles ListDragSource.GiveFeedback
' Use custom cursors if the check box is checked.
If (UseCustomCursorsCheck.Checked) Then
' Set the custom cursor based upon the effect.
e.UseDefaultCursors = False
If ((e.Effect And DragDropEffects.Move) = DragDropEffects.Move) Then
Cursor.Current = MyNormalCursor
Else
Cursor.Current = MyNoDropCursor
End If
End If
End Sub
Megjegyzések
Az GiveFeedback esemény akkor jön létre, amikor elindít egy húzási műveletet. Az esemény esetén a GiveFeedback húzási esemény forrása módosíthatja az egérmutató megjelenését, hogy vizuális visszajelzést adjon a felhasználónak egy húzási művelet során.
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.
Az események kezelésével kapcsolatos további információkért lásd : Események kezelése és emelése.