Control.GiveFeedback Událost
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Nastane během operace přetažení.
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
Event Type
Příklady
Následující příklad kódu ukazuje operaci přetažení mezi dvěma ListBox ovládacími prvky. Příklad volá metodu DoDragDrop při spuštění akce přetažení. Akce přetažení se spustí, pokud se myš během události přesunula více než SystemInformation.DragSize z umístění MouseDown myši. Metoda IndexFromPoint slouží k určení indexu položky, která se má během MouseDown události přetáhnout.
Příklad také ukazuje použití vlastních kurzorů pro operaci přetažení. Příklad vyžaduje, 3dwarro.cur aby byly dva soubory kurzoru a 3dwno.curexistují v adresáři aplikace pro vlastní přetažení a bez přetažení kurzorů. Vlastní kurzory se použijí, pokud je zaškrtnuté UseCustomCursorsCheckCheckBox . Vlastní kurzory jsou nastaveny v obslužné rutině GiveFeedback události.
Stav klávesnice se vyhodnotí v DragOver obslužné rutině události vpravo ListBox, aby bylo možné určit, jaké operace přetažení bude založená na stavu kláves SHIFT, CTRL, ALT nebo CTRL+ALT. Umístění v místě, kde ListBox by došlo k poklesu, je také určeno během DragOver události. Pokud data, která se mají vypustit, nejsou String, je nastavena DragEventArgs.Effect na None hodnotu in DragDropEffects. Nakonec se stav poklesu zobrazí v sadě DropLocationLabelLabel.
Data, která se mají zahodit pro právo ListBox , jsou určena v DragDrop obslužné rutině události a String hodnota se přidá na příslušné místo v bodě ListBox. Pokud se operace přetažení přesune mimo hranice formuláře, operace přetažení se zruší v obslužné rutině QueryContinueDrag události.
Tento výňatek kódu ukazuje použití GiveFeedback události. Podívejte se na DoDragDrop metodu kompletního příkladu kódu.
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
Poznámky
Událost GiveFeedback se vyvolá při spuštění operace přetažení. GiveFeedback Při události může zdroj události přetažení změnit vzhled ukazatele myši, aby mohl uživatel během operace přetažení předat vizuální zpětnou vazbu.
Následující článek popisuje, jak a kdy jsou vyvolány události související s operacemi přetažení myší.
Metoda DoDragDrop určuje ovládací prvek pod aktuálním umístěním kurzoru. Pak zkontroluje, jestli je ovládací prvek platným cílem odstranění.
Pokud je ovládací prvek platným cílem přetažení, GiveFeedback je událost vyvolána se zadaným efektem přetažení. Seznam efektů přetažení najdete v výčtu DragDropEffects .
Změny v poloze kurzoru myši, stavu klávesnice a stavu tlačítka myši jsou sledovány.
Pokud se uživatel přesune mimo okno, DragLeave vyvolá se událost.
Pokud myš vstoupí do jiného ovládacího prvku, DragEnter je pro tento ovládací prvek vyvolán.
Pokud se myš přesune, ale zůstane ve stejném ovládacím prvku, DragOver vyvolá se událost.
Pokud dojde ke změně stavu klávesnice nebo tlačítka myši, QueryContinueDrag událost se vyvolá a určí, zda má pokračovat přetažením, přetažením dat nebo zrušením operace na základě hodnoty Action vlastnosti události QueryContinueDragEventArgs.
Pokud je
Continuehodnota DragAction , DragOver událost je vyvolána, aby pokračovala v operaci a GiveFeedback událost je vyvolána s novým efektem, aby bylo možné nastavit odpovídající vizuální zpětnou vazbu. Seznam platných efektů přetažení najdete ve výčtu DragDropEffects .Poznámka
Události DragOver a GiveFeedback události jsou spárované tak, aby se myš pohybuje přes cíl přetažení, uživatel dostane nejvíce up-to- datum zpětné vazby na pozici myši.
Pokud je
Drophodnota DragAction , vrátí se hodnota efektu poklesu do zdroje, takže zdrojová aplikace může provést příslušnou operaci se zdrojovými daty, například vyjmout data, pokud byla operace přesunutím.Pokud je
Cancelhodnota DragAction , DragLeave je vyvolána událost.
Další informace o zpracování událostí naleznete v tématu Zpracování a vyvolávání událostí.