Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A Windows Forms olyan metódusokat, eseményeket és osztályokat tartalmaz, amelyek a húzási viselkedést implementálják. Ez a cikk áttekintést nyújt a Windows Forms húzással történő támogatásáról.
Húzd és vidd események
Az húzási művelet két eseménykategóriát különböztet meg: az áthúzásos művelet aktuális célpontján előforduló eseményeket, valamint az húzási művelet forrásán bekövetkező eseményeket. A húzás és ejtés műveleteinek végrehajtásához kezelnie kell ezeket az eseményeket. Az események eseményargumentumaiban elérhető információk használatával egyszerűen megkönnyítheti a húzási műveleteket.
Események az aktuális leejtési célponton
Az alábbi táblázat azokat az eseményeket mutatja be, amelyek egy húzás és eldobás művelet aktuális célobjektumán történnek.
Egér-esemény | Leírás |
---|---|
DragEnter | Ez az esemény akkor fordul elő, ha egy objektumot a vezérlő határaiba húz. Az esemény kezelője egy DragEventArgstípusú argumentumot kap. |
DragOver | Ez az esemény akkor fordul elő, ha egy objektumot húznak, miközben az egérmutató a vezérlőelem határán belül van. Az esemény kezelője egy DragEventArgstípusú argumentumot kap. |
DragDrop | Ez az esemény akkor következik be, ha egy húzás és ejtés művelet befejeződött. Az esemény kezelője egy DragEventArgstípusú argumentumot kap. |
DragLeave | Ez az esemény akkor fordul elő, ha egy objektumot kihúznak a vezérlő határaiból. Az esemény kezelője egy EventArgstípusú argumentumot kap. |
A DragEventArgs osztály megadja az egérmutató helyét, a billentyűzet egérgombjainak és módosítóbillentyűinek aktuális állapotát, a húzandó adatokat, valamint DragDropEffects azokat az értékeket, amelyek meghatározzák a húzási esemény forrása által engedélyezett műveleteket és a művelet célcseppeffektusát.
Események a legördülő forráson
Az alábbi táblázat a húzási művelet forrásán előforduló eseményeket mutatja be.
Egér-esemény | Leírás |
---|---|
GiveFeedback | Ez az esemény húzási művelet közben következik be. Lehetővé teszi, hogy vizuális jelzést adjon a felhasználónak a húzási műveletről, például az egérmutató módosításáról. Az esemény kezelője egy GiveFeedbackEventArgstípusú argumentumot kap. |
QueryContinueDrag | Ez az esemény egy húzási művelet során jön létre, é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 meg kell-e szakítani. Az esemény kezelője egy QueryContinueDragEventArgstípusú argumentumot kap. |
A QueryContinueDragEventArgs osztály megadja a billentyűzet egérgombjainak és módosítóbillentyűinek aktuális állapotát, egy értéket, amely meghatározza, hogy az ESC billentyűt lenyomták-e, valamint egy DragAction értéket, amely megadhatja, hogy a húzási művelet folytatódjon-e.
Húzás és ejtés végrehajtása
A húzási műveletek mindig két összetevőt foglalnak magukban, a húzási forrás és a cél cél. A húzási és ejtési művelet indításához jelöljön ki egy vezérlőt mint forrást, és kezelje a MouseDown eseményt. Az eseménykezelőben hívja meg azt a DoDragDrop metódust, amely az eséssel és egy DragDropEffects értékkel kapcsolatos adatokat adja meg.
Állítsa a célvezérlő AllowDrop tulajdonságát true
értékre, hogy a vezérlő elfogadhasson egy húzási műveletet. A cél kétféle eseményt kezel, először egy eseményt, amikor a húzás a vezérlő fölött történik, például DragOver. És egy második esemény, amely maga a drop művelet, DragDrop.
Az alábbi példa bemutatja a húzás és ejtés műveletet egy Label vezérlőelem és egy TextBox között. Amikor a művelet befejeződött, a TextBox
úgy reagál, hogy a címke szövegét hozzárendeli önmagához.
// Initiate the drag
private void label1_MouseDown(object sender, MouseEventArgs e) =>
DoDragDrop(((Label)sender).Text, DragDropEffects.All);
// Set the effect filter and allow the drop on this control
private void textBox1_DragOver(object sender, DragEventArgs e) =>
e.Effect = DragDropEffects.All;
// React to the drop on this control
private void textBox1_DragDrop(object sender, DragEventArgs e) =>
textBox1.Text = (string)e.Data.GetData(typeof(string));
' Initiate the drag
Private Sub Label1_MouseDown(sender As Object, e As MouseEventArgs)
DoDragDrop(DirectCast(sender, Label).Text, DragDropEffects.All)
End Sub
' Set the effect filter and allow the drop on this control
Private Sub TextBox1_DragOver(sender As Object, e As DragEventArgs)
e.Effect = DragDropEffects.All
End Sub
' React to the drop on this control
Private Sub TextBox1_DragDrop(sender As Object, e As DragEventArgs)
TextBox1.Text = e.Data.GetData(GetType(String))
End Sub
A húzási effektusokról további információt a Data és a AllowedEffectcímű témakörben talál.
Lásd még
.NET Desktop feedback