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 ovládacími prvky ListBox. Příklad volá metodu DoDragDrop při spuštění akce přetažení. Akce přetažení se spustí, pokud se během události MouseDown přesunulo více než SystemInformation.DragSize z umístění myši. Metoda IndexFromPoint slouží k určení indexu položky, která se má přetáhnout během události MouseDown
.
Příklad také ukazuje použití vlastních kurzorů pro operaci přetažení. Příklad vyžaduje, aby byly dva soubory kurzoru, 3dwarro.cur
a 3dwno.cur
, existují v adresáři aplikace pro vlastní přetažení a bez-drop kurzory, v uvedeném pořadí. Vlastní kurzory se použijí, pokud je zaškrtnuté UseCustomCursorsCheck
CheckBox. Vlastní kurzory jsou nastaveny v obslužné rutině události GiveFeedback.
Stav klávesnice se vyhodnocuje v obslužné rutině události DragOver pro správnou 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 ListBox
, kde dojde k poklesu, je také určeno během DragOver
události. Pokud data, která chcete odstranit, nejsou String
, je DragEventArgs.Effect nastavena na None
v DragDropEffects. Nakonec se stav poklesu zobrazí v DropLocationLabel
Label.
Data, která se mají odstranit pro správný ListBox
, se určují v obslužné rutině události DragDrop a hodnota String
se přidá na příslušné místo v ListBox
. Pokud se operace přetažení přesune mimo hranice formuláře, operace přetažení se zruší v obslužné rutině události QueryContinueDrag.
Tento výňatek kódu ukazuje použití GiveFeedback události. Kompletní příklad kódu najdete v metodě DoDragDrop.
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 je vyvolána při spuštění operace přetažení. Při události GiveFeedback může zdroj události přetažení změnit vzhled ukazatele myši, aby uživateli poskytl zpětnou vazbu během operace přetažení myší.
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í, je vyvolána událost GiveFeedback se zadaným efektem přetažení. Seznam efektů přetažení najdete v DragDropEffects výčtu.
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, vyvolá se událost DragLeave.
Pokud myš přejde do jiného ovládacího prvku, DragEnter pro tento ovládací prvek se vyvolá.
Pokud se myš přesune, ale zůstane ve stejném ovládacím prvku, vyvolá se událost DragOver.
Pokud dojde ke změně stavu klávesnice nebo tlačítka myši, vyvolá se událost QueryContinueDrag a určí, zda má pokračovat přetažením, přetažením dat nebo zrušením operace na základě hodnoty vlastnosti ActionQueryContinueDragEventArgsudálosti .
Pokud je hodnota DragAction
Continue
, vyvolá se událost DragOver, aby pokračovala v operaci a událost GiveFeedback 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 v DragDropEffects výčtu.Poznámka
Události DragOver a GiveFeedback jsou spárované tak, aby se při přesouvání myši přes cíl přetažení dostal uživatel nejvíce up-to-date feedback na pozici myši.
Pokud je hodnota DragAction
Drop
, vrátí se do zdroje hodnota efektu poklesu, takže zdrojová aplikace může provést příslušnou operaci se zdrojovými daty; Například vyjměte data, pokud byla operace přesunutím.Pokud je hodnota DragAction
Cancel
, vyvolá se událost DragLeave.
Další informace o zpracování událostí naleznete v tématu zpracování a vyvolávání událostí.