Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ пСрСтаскиваниС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°

ΠŸΠ΅Ρ€Π΅Ρ‚Π°ΡΠΊΠΈΠ²Π°Π½ΠΈΠ΅

ΠŸΠ΅Ρ€Π΅Ρ‚Π°ΡΠΊΠΈΠ²Π°Π½ΠΈΠ΅ являСтся ΠΈΠ½Ρ‚ΡƒΠΈΡ‚ΠΈΠ²Π½ΠΎ понятным способом ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΈΠ»ΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ прилоТСниями Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ с Windows. ΠŸΠ΅Ρ€Π΅Ρ‚Π°ΡΠΊΠΈΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π΅Ρ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΌΠ΅ΠΆΠ΄Ρƒ прилоТСниями ΠΈΠ»ΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ прилоТСния с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ стандартного ТСста («Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅-ΡƒΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅-сдвиг» с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ°Π»ΡŒΡ†Π° ΠΈΠ»ΠΈ «Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅-сдвиг» с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΡ‹ΡˆΠΈ ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π°).

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ пСрСтаскивания, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΈΠ»ΠΈ ΠΎΠ±Π»Π°ΡΡ‚ΡŒΡŽ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ запускаСтся ТСст пСрСтаскивания, прСдоставляСт Π΄Π°Π½Π½Ρ‹Π΅ для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ΠΏΡƒΡ‚Π΅ΠΌ заполнСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΏΠ°ΠΊΠ΅Ρ‚Π° Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ стандартныС Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ тСкст, RTF, HTML, Ρ‚ΠΎΡ‡Π΅Ρ‡Π½Ρ‹Π΅ рисунки, элСмСнты Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Ρ‚ΠΈΠΏ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚: ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ссылка. ΠŸΡ€ΠΈ освобоТдСнии указатСля выполняСтся пСрСтаскиваниС. ΠœΠ΅ΡΡ‚ΠΎ пСрСноса, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ являСтся ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΈΠ»ΠΈ ΠΎΠ±Π»Π°ΡΡ‚ΡŒΡŽ ΠΏΠΎΠ΄ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ, ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠ°ΠΊΠ΅Ρ‚ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ‚ΠΈΠΏ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π½ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ.

Π’ΠΎ врСмя пСрСтаскивания ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ интСрфСйс пСрСтаскивания прСдоставляСт Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ†ΠΈΡŽ Ρ‚ΠΈΠΏΠ° выполняСмой ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ пСрСтаскивания. Π­Ρ‚Π° Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Π°Ρ обратная связь ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ прСдоставляСтся источником, Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π° мСстом пСрСноса ΠΏΡ€ΠΈ Π½Π°Π²Π΅Π΄Π΅Π½ΠΈΠΈ Π½Π° Π½ΠΈΡ… указатСля.

БоврСмСнная функция пСрСтаскивания доступна Π½Π° всСх устройствах, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΡ… UWP. Π­Ρ‚Π° функция позволяСт ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΌΠ΅ΠΆΠ΄Ρƒ прилоТСниями любого Ρ‚ΠΈΠΏΠ° Π»ΠΈΠ±ΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ самого прилоТСния, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ классичСскиС Windows-прилоТСния. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ основноС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ удСляСтся API-интСрфСйсу XAML для соврСмСнной ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ пСрСтаскивания. ПослС Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ пСрСтаскиваниС ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π²ΠΎ всСх направлСниях, Π² Ρ‚ΠΎΠΌ числС ΠΈΠ· прилоТСния UWP Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ UWP, ΠΈΠ· прилоТСния UWP Π² классичСскоС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΠΈΠ· классичСского прилоТСния Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ UWP.

Π—Π΄Π΅ΡΡŒ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΎΠ±Π·ΠΎΡ€ дСйствий ΠΏΠΎ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ пСрСтаскивания Π² вашСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ.

Π’ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ пСрСтаскивания

Π§Ρ‚ΠΎΠ±Ρ‹ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ пСрСтаскивания элСмСнта, Π·Π°Π΄Π°ΠΉΡ‚Π΅ Π΅Π³ΠΎ свойству CanDrag Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ true. Π­Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ элСмСнт ΠΈ содСрТащиСся Π² Π½Π΅ΠΌ элСмСнты Π² случаС ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ListView, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ пСрСтаскивания.

ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅, ΠΊΠ°ΠΊΠΈΠ΅ элСмСнты Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ пСрСтаскиваниС. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ Π½Π΅ трСбуСтся ΠΏΠ΅Ρ€Π΅Ρ‚Π°ΡΠΊΠΈΠ²Π°Ρ‚ΡŒ всС содСрТимоС Π² вашСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ; Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ элСмСнты, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ изобраТСния ΠΈ тСкст.

Π§Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ пСрСтаскиваниС, большС Π½ΠΈΡ‡Π΅Π³ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ, Ссли Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Ρ‹ Π½Π΅ ΡΠΎΠ±ΠΈΡ€Π°Π΅Ρ‚Π΅ΡΡŒ ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ интСрфСйс (ΠΎΠ± этом рассказываСтся дальшС Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅). Для настройки Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ пСрСтаскивания придСтся Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ дСйствия.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚Π° Π΄Π°Π½Π½Ρ‹Ρ…

Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв систСма Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚ Π΄Π°Π½Π½Ρ‹Ρ… Π·Π° вас. БистСма автоматичСски ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚:

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π΄Ρ€ΡƒΠ³ΠΈΠΌ содСрТимым Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ события DragStarted ΠΈ DragCompleted ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… для создания собствСнного ΠΏΠ°ΠΊΠ΅Ρ‚Π° Π΄Π°Π½Π½Ρ‹Ρ… DataPackage.

Π’ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ отпускания

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠ° дСмонстрируСт, ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ отпусканиС доступным для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ области прилоТСния, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ AllowDrop Π² XAML. Если ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ попытаСтся ΠΎΡ‚ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ пСрСтаскиваСмоС содСрТимоС Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ мСстС, систСма Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это. Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΠΌΠΎΠ³Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ пСрСтаскиваниС Π² любом мСстС вашСго прилоТСния, установитС вСсь Ρ„ΠΎΠ½ Π² качСствС мСста пСрСноса.

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° события DragOver

Π‘ΠΎΠ±Ρ‹Ρ‚ΠΈΠ΅ DragOver Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ пСрСтаскиваСт элСмСнт Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, Π½ΠΎ Π΅Ρ‰Π΅ Π½Π΅ Π·Π°Π²Π΅Ρ€ΡˆΠΈΠ» этот процСсс. Π’ этом ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ свойства AcceptedOperation Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠΉ Π²ΠΈΠ΄ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. НаиболСС распространСно ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅.

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ пСрСтаскивания

Π‘ΠΎΠ±Ρ‹Ρ‚ΠΈΠ΅ Drop Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ отпускаСт элСмСнты Π² допустимой области прилоТСния. ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Π°ΠΉΡ‚Π΅ ΠΈΡ… с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ свойства DataView.

Для простоты Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π½ΠΈΠΆΠ΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΏΠ΅Ρ€Π΅Ρ‚Π°Ρ‰ΠΈΠ» ΠΎΠ΄Π½Ρƒ Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΡŽ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ. На самом Π΄Π΅Π»Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅Ρ‚Π°ΡΠΊΠΈΠ²Π°Ρ‚ΡŒ нСсколько элСмСнтов Ρ€Π°Π·Π½Ρ‹Ρ… Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ² ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ. Π’Π°ΡˆΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ эту Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ, провСряя, ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ Ρ„Π°ΠΉΠ»ΠΎΠ² Π±Ρ‹Π»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½Ρ‹ пСрСтаскиваниСм ΠΈ сколько Ρ„Π°ΠΉΠ»ΠΎΠ² сущСствуСт, ΠΈ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· Π½ΠΈΡ… ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. Π’Π°ΠΌ Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ, слСдуСт Π»ΠΈ ΡƒΠ²Π΅Π΄ΠΎΠΌΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, Ссли ΠΎΠ½ΠΈ ΠΏΡ‹Ρ‚Π°ΡŽΡ‚ΡΡ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚.

Настройка ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса

БистСма прСдоставляСт ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ интСрфСйс ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для пСрСтаскивания. Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ области ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ ΠΈ Π³Π»ΠΈΡ„Ρ‹, ΠΈΠ»ΠΈ Π²ΠΎΠΎΠ±Ρ‰Π΅ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса. Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ интСрфСйс, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ свойство DragEventArgs.DragUIOverride.

ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ контСкстного мСню Π½Π° элСмСнтС, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Ρ‚Π°ΡΠΊΠΈΠ²Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ сСнсорного управлСния

ΠŸΡ€ΠΈ использовании сСнсорного управлСния пСрСтаскиваниС UIElement ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ Π΅Π³ΠΎ контСкстного мСню Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΌΠΈ сСнсорными ТСстами, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… начинаСтся с наТатия ΠΈ удСрТивания. Π’ΠΎΡ‚ ΠΊΠ°ΠΊ систСма Ρ€Π°Π·Π»ΠΈΡ‡Π°Π΅Ρ‚ эти Π΄Π²Π° дСйствия Π½Π°Π΄ элСмСнтами Π² вашСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠΌΠΈ ΠΎΠ±Π° дСйствия:

ΠžΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ элСмСнта Π² ListView ΠΈΠ»ΠΈ GridView Π² качСствС ΠΏΠ°ΠΏΠΊΠΈ

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ListViewItem ΠΈΠ»ΠΈ GridViewItem ΠΊΠ°ΠΊ ΠΏΠ°ΠΏΠΊΡƒ. Π­Ρ‚ΠΎ особСнно ΡƒΠ΄ΠΎΠ±Π½ΠΎ Π² сцСнариях TreeView ΠΈ ΠΏΡ€ΠΎΠ²ΠΎΠ΄Π½ΠΈΠΊΠ°. Для этого явно Π·Π°Π΄Π°ΠΉΡ‚Π΅ свойству AllowDrop Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ True для этого элСмСнта.

БистСма автоматичСски ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ пСрСтаскивания Π² ΠΏΠ°ΠΏΠΊΡƒ Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ элСмСнту, Π½Π΅ ΡΠ²Π»ΡΡŽΡ‰Π΅ΠΌΡΡ ΠΏΠ°ΠΏΠΊΠΎΠΉ. Код вашСго прилоТСния Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ событиС Drop элСмСнта ΠΏΠ°ΠΏΠΊΠΈ (Π° Ρ‚Π°ΠΊΠΆΠ΅ элСмСнта, Π½Π΅ ΡΠ²Π»ΡΡŽΡ‰Π΅Π³ΠΎΡΡ ΠΏΠ°ΠΏΠΊΠΎΠΉ), Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ источник Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ пСрСтаскиваСмый элСмСнт Π² Ρ†Π΅Π»Π΅Π²ΡƒΡŽ ΠΏΠ°ΠΏΠΊΡƒ.

Π’ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ измСнСния порядка пСрСтаскивания Π² ListView

РСализация ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ пСрСтаскивания

Класс UIElement выполняСт Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΠΎ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ пСрСтаскивания Π·Π° вас. Но ΠΏΡ€ΠΈ нСобходимости ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ API-интСрфСйсов Π² Windows. ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²ΠΎ ΠΈΠΌΠ΅Π½ ApplicationModel. ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚. DragDrop. Core.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ΠŸΠ΅Ρ€Π΅Ρ‚Π°ΡΠΊΠΈΠ²Π°Π½ΠΈΠ΅ ΠΌΡ‹ΡˆΡŒΡŽ Π² Windows β€” ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Π΅ ΡƒΡ€ΠΎΠΊΠΈ

ΠŸΠ΅Ρ€Π΅Ρ‚Π°ΡΠΊΠΈΠ²Π°Π½ΠΈΠ΅ β€” этот Π½Π΅ΡƒΠΊΠ»ΡŽΠΆΠΈΠΉ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ ΠΏΠΎ-английски называСтся dragβ€” andβ€” drop.

ΠŸΡ€ΠΈΠ΅ΠΌ выполняСтся Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ протягиваниС, Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для пСрСмСщСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². ΠŸΠ΅Ρ€Π΅Ρ‚Π°ΡΠΊΠΈΠ²Π°Π΅ΠΌΡ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π²Ρ‹Π΄Π΅Π»Π΅Π½Ρ‹.

Для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Ρ‰Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ Π»Π΅Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡ‹ΡˆΠΈ Π½Π° Π·Π½Π°Ρ‡ΠΊΠ΅ Мой ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ β€” ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚ Π΅Π³ΠΎ Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅. НС отпуская ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠΌΡ‹ΡˆΠΈ, пСрСмСститС Π·Π½Π°Ρ‡ΠΎΠΊ Π² Π΄Ρ€ΡƒΠ³ΠΎΠ΅ мСсто Π Π°Π±ΠΎΡ‡Π΅Π³ΠΎ стола ΠΈ Ρ‚Π°ΠΌ отпуститС. Π—Π½Π°Ρ‡ΠΎΠΊ Π·Π°ΠΉΠΌΠ΅Ρ‚ Π½ΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΡ‹ΡˆΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈ ΠΎΠΊΠ½Π°. КаТдоС ΠΎΠΊΠ½ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ строку Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° β€” Π·Π° Π½Π΅Π΅ ΠΈ выполняСтся ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡ€ΠΈΠ΅ΠΌΠ° пСрСтаскивания ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ ΠΈ Π΄Π°ΠΆΠ΅ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹.

ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠ΅Ρ€Π΅Ρ‚Π°Ρ‰ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡ΠΎΠΊ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° Π½Π° Π·Π½Π°Ρ‡ΠΎΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, которая ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π½ΠΈΠΌ ΠžΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚ ΠΈ запуск ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ Π² Π½Π΅ΠΉ Π΄ΠΎΠΊΡƒ ΠΌΠ΅Π½Ρ‚Π°. ΠšΡΡ‚Π°Ρ‚ΠΈ, это Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ со Π·Π½Π°Ρ‡ΠΊΠ°ΠΌΠΈ β€” Π²ΠΏΠΎΠ»Π½Π΅ годятся ΠΈ ярлыки, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° рисункС Π½ΠΈΠΆΠ΅:

Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ пСрСтаскиваниС выполняСтся Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ΅, Π½ΠΎ ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΎΠΉ ΠΏΡ€Π°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠ΅ ΠΌΡ‹ΡˆΠΈ, Π° Π½Π΅ Π»Π΅Π²ΠΎΠΉ. ДСйствиС ΠΏΠΎΡ…ΠΎΠΆΠ΅Π΅, Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ β€” Π΄Ρ€ΡƒΠ³ΠΎΠΉ. ΠŸΡ€ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΌ пСрСтаскивании ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ пСрСмСщаСтся Π° ΠΏΡ€ΠΈ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌ пСрСтаскивании дСйствиС ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ.

Π’Ρ‹Π±ΠΎΡ€ Π½ΡƒΠΆΠ½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ. По ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ΠŸΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ Π½ΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π° Π΅Π³ΠΎ старая копия уничтоТаСтся.

По ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ΠšΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ создаСтся новая копия Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° Π² Π½ΠΎΠ²ΠΎΠΌ мСстС, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΈ старая копия ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ‚ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ.

Если трСбуСтся ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ доступ ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρƒ ΠΈΠ»ΠΈ устройству, создайтС Π½ΡƒΠΆΠ½ΠΎΠ΅ число ярлыков ΠΈ располоТитС ΠΈΡ… Π² ΡƒΠ΄ΠΎΠ±Π½Ρ‹Ρ… мСстах.

Допустим, Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ содСрТится Π½Π° ТСстком дискС (диск Π‘:) ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°. Однако Π½Π° Π Π°Π±ΠΎΡ‡Π΅ΠΌ столС Π·Π½Π°Ρ‡ΠΊΠ° диска Π‘: Π²Ρ‹ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅.

ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ ΠΎΠΊΠ½ΠΎ β€” Мой ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ ΠΈ Ρ€Π°Π·Ρ‹Ρ‰ΠΈΡ‚Π΅ Π² Π½Π΅ΠΌ Π·Π½Π°Ρ‡ΠΎΠΊ диска Π‘:. Π”Π²Π°ΠΆΠ΄Ρ‹ Ρ‰Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ Π½Π° этом Π·Π½Π°Ρ‡ΠΊΠ΅ β€” откроСтся ΠΎΠΊΠ½ΠΎ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ прСдставлСно содСрТимоС диска. Π—Π°ΠΊΡ€ΠΎΠΉΡ‚Π΅ Π΅Π³ΠΎ Ρ‰Π΅Π»Ρ‡ΠΊΠΎΠΌ Π½Π° Π·Π°ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉ ΠΊΠ½ΠΎΠΏΠΊΠ΅ (ΠΊΠ½ΠΎΠΏΠΊΠ° Β«Ρ…Β» Π² ΠΏΡ€Π°Π²ΠΎΠΌ Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ ΡƒΠ³Π»Ρƒ ΠΎΠΊΠ½Π°).

Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠ΄ΡƒΠΌΠ°Π΅ΠΌ, ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ доступ ΠΊ диску Π‘: Π½Π΅ ΠΈΠ· ΠΎΠΊΠ½Π° Мой ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€, Π° нСпосрСдствСнно с Π Π°Π±ΠΎΡ‡Π΅Π³ΠΎ стола.

ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ пСрСтаскивания ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡ΠΎΠΊ Π‘: ΠΈΠ· ΠΎΠΊΠ½Π° β€” Мой ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ Π½Π° Π Π°Π±ΠΎΡ‡ΠΈΠΉ стол. Π£ вас Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π²Ρ‹ΠΉΠ΄Π΅Ρ‚. Π­Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ понятно: ТСсткий диск с ΠΈΠΌΠ΅Π½Π΅ΠΌ Π‘: Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½, ΠΈ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΊΠΎΠΏΠΈΠΉ Ρƒ Π½Π΅Π³ΠΎ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ пСрСтаскивания ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΎΠΉ ΠΏΡ€Π°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠ΅ ΠΌΡ‹ΡˆΠΈ ΠΈ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ярлык ТСсткого диска Π½Π° Π Π°Π±ΠΎΡ‡Π΅ΠΌ столС. Π­Ρ‚Π° опСрация ΠΏΡ€ΠΎΠΉΠ΄Π΅Ρ‚ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π²Ρ‹ Π½Π΅ создаСтС Π½ΠΎΠ²Ρ‹Ρ… ΠΊΠΎΠΏΠΈΠΉ ТСсткого диска, Π° просто устанавливаСтС Π½Π° Π½Π΅Π³ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ (Π²ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π½ΠΎ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈ нСобходимости). Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ Ρ‰Π΅Π»Ρ‡ΠΎΠΊ Π½Π° ярлыкС Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ содСрТимоС ТСсткого диска, ΠΊΠ°ΠΊ ΠΈ Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ Ρ‰Π΅Π»Ρ‡ΠΎΠΊ Π½Π° основном Π·Π½Π°Ρ‡ΠΊΠ΅.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ установим различия ΠΌΠ΅ΠΆΠ΄Ρƒ Π·Π½Π°Ρ‡ΠΊΠΎΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈ ярлыком Π·Π½Π°Ρ‡ΠΊΠ° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

Π©Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ ΠΏΡ€Π°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡ‹ΡˆΠΈ Π½Π° Π·Π½Π°Ρ‡ΠΊΠ΅ диска Π‘: ΠΈ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Π² контСкстном мСню ΠΏΡƒΠ½ΠΊΡ‚ β€” Бвойства. Π’ ΠΎΡ‚ΠΊΡ€Ρ‹Π²ΡˆΠ΅ΠΌΡΡ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΌ ΠΎΠΊΠ½Π΅ Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ свойства диска: объСм, Ρ€Π°Π·ΠΌΠ΅Ρ€ свободного пространства ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅. Π’ΠΎ Π΅ΡΡ‚ΡŒ Π·Π½Π°Ρ‡ΠΎΠΊ прСдставляСт ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΎΠ½ Π΅ΠΌΡƒ соотвСтствуСт ΠΈ обСспСчиваСт доступ ΠΊ Π΅Π³ΠΎ свойствам.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρ‰Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ ΠΏΡ€Π°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡ‹ΡˆΠΈ Π½Π° ярлыкС Π·Π½Π°Ρ‡ΠΊΠ° диска Π‘: ΠΈ снова Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Π² контСкстном мСню ΠΏΡƒΠ½ΠΊΡ‚ Бвойства. Π’Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π² этом случаС Π½Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… свойств диска Π‘: систСма Π²Π°ΠΌ Π½Π΅ ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚ β€”Ρ‚ΠΎΠ»ΡŒΠΊΠΎ свойства самого ярлыка.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ярлык Π½Π΅ прСдставляСт Ρ‚ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ с Π½ΠΈΠΌ связан, ΠΈ Π½Π΅ обСспСчиваСт доступ ΠΊ Π΅Π³ΠΎ свойствам. Π­Ρ‚ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ. Π’ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ «Гастроном Π·Π° ΡƒΠ³Π»ΠΎΠΌΒ» ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Π½Π°ΠΉΡ‚ΠΈ гастроном, Π½ΠΎ ΠΎΡ‚Π½ΡŽΠ΄ΡŒ Π΅Π³ΠΎ Π½Π΅ замСняСт ;).

ΠŸΠ΅Ρ€Π΅Ρ‚Π°ΡΠΊΠΈΠ²Π°Π½ΠΈΠ΅ Π·Π½Π°Ρ‡ΠΊΠ° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡ€Π°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ β€” самый ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ, хотя ΠΈ Π½Π΅ СдинствСнный способ создания ярлыков. Π‘Π΄Π΅Π»Π°ΠΉΡ‚Π΅ сСбС ярлык Π·Π½Π°Ρ‡ΠΊΠ° β€” Мой ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ Π½Π° ПанСли быстрого запуска. Π’ Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ ΠΎΠ½ Π½Π΅ Ρ€Π°Π· Π²Π°ΠΌ пригодится. Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ пСрСтаскиваниС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ пСрСтаскиваниС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ пСрСтаскиваниС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ пСрСтаскиваниС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ пСрСтаскиваниС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ΠžΠ±Ρ‰ΠΈΠ΅ свСдСния ΠΎ пСрСтаскивании

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ ΠΎΠ±Ρ‰ΠΈΠ΅ свСдСния ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ΅ пСрСтаскивания Π² прилоТСниях Windows Presentation Foundation (WPF). ΠŸΠ΅Ρ€Π΅Ρ‚Π°ΡΠΊΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ рСализуСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΡ‹ΡˆΠΈ (ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰Π΅Π³ΠΎ устройства) для Π²Ρ‹Π±ΠΎΡ€Π° ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ пСрСтаскивания ΠΈΡ… Π² Ρ†Π΅Π»ΡŒ пСрСтаскивания Π² ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ интСрфСйс.

ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° пСрСтаскивания Π² WPF

Π’ опСрациях пСрСтаскивания ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΡƒΡ‡Π°ΡΡ‚Π²ΡƒΡŽΡ‚ Π΄Π²Π΅ стороны: источник пСрСтаскивания, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ происходит пСрСтаскиваСмый ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΈ Ρ†Π΅Π»ΡŒ пСрСтаскивания, которая ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ пСрСтаскиваСмый ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ пСрСтаскивания ΠΈ Ρ†Π΅Π»ΡŒ пСрСтаскивания ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ элСмСнтами ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΈΠ»ΠΈ Π² Ρ€Π°Π·Π½Ρ‹Ρ… прилоТСниях.

МоТно ΠΏΠ΅Ρ€Π΅Ρ‚Π°ΡΠΊΠΈΠ²Π°Ρ‚ΡŒ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ ΠΈ количСства ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². НапримСр, Π² качСствС Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространСнных ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² пСрСтаскивания ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π·Π²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹, ΠΏΠ°ΠΏΠΊΠΈ, Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ΅ содСрТимоС.

ΠšΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ дСйствия, выполняСмыС Π²ΠΎ врСмя ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ пСрСтаскивания, зависят ΠΎΡ‚ прилоТСния ΠΈ часто ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ контСкстом. НапримСр, пСрСтаскиваниС Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠΈ Π² Π΄Ρ€ΡƒΠ³ΡƒΡŽ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ устройствС хранСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Π΅Ρ‚ Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ ΠΏΡ€ΠΈ пСрСтаскивании Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈΠ· ΠΎΠ±Ρ‰Π΅Π³ΠΎ рСсурса UNC Π² Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΏΠ°ΠΏΠΊΡƒ Ρ„Π°ΠΉΠ»Ρ‹ ΠΊΠΎΠΏΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.

Π’ срСдствах пСрСтаскивания, прСдоставляСмых WPF, прСдусмотрСна высокая Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ настройки с Ρ†Π΅Π»ΡŒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… сцСнариСв пСрСтаскивания. ΠŸΠ΅Ρ€Π΅Ρ‚Π°ΡΠΊΠΈΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΎΠ΄Π½ΠΎΠ³ΠΎ прилоТСния ΠΈΠ»ΠΈ Π² Ρ€Π°Π·Π½Ρ‹Ρ… прилоТСниях. WPFΠ’Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ пСрСтаскиваниС ΠΌΠ΅ΠΆΠ΄Ρƒ прилоТСниями ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ прилоТСниями Windows.

Π’ WPF Π»ΡŽΠ±Ρ‹Π΅ элСмСнты UIElement ΠΈΠ»ΠΈ ContentElement ΠΌΠΎΠ³ΡƒΡ‚ ΡƒΡ‡Π°ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π² опСрациях пСрСтаскивания. Бобытия ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ для ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ пСрСтаскивания, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ Π² классС DragDrop. ΠšΠ»Π°ΡΡΡ‹ UIElement ΠΈ ContentElement содСрТат псСвдонимы для Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… событий DragDrop, Ρ‡Ρ‚ΠΎΠ±Ρ‹ эти события ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π»ΠΈΡΡŒ Π² спискС Ρ‡Π»Π΅Π½ΠΎΠ² класса, ΠΊΠΎΠ³Π΄Π° UIElement ΠΈΠ»ΠΈ ContentElement наслСдуСтся ΠΊΠ°ΠΊ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ элСмСнт. ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ событий, связанныС с этими событиями, ΠΏΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΡΡŽΡ‚ΡΡ ΠΊ основному Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΌΡƒ ΡΠΎΠ±Ρ‹Ρ‚ΠΈΡŽ DragDrop ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ экзСмпляр Π΄Π°Π½Π½Ρ‹Ρ… события. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свСдСния см. Π² описании события UIElement.Drop.

ΠŸΠ΅Ρ€Π΅Ρ‚Π°ΡΠΊΠΈΠ²Π°Π½ΠΈΠ΅ OLE Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² Π·ΠΎΠ½Π΅ Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π°.

ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π΄Π°Π½Π½Ρ‹Ρ…

ΠŸΠ΅Ρ€Π΅Ρ‚Π°ΡΠΊΠΈΠ²Π°Π½ΠΈΠ΅ являСтся Ρ‡Π°ΡΡ‚ΡŒΡŽ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ±Ρ‰Π΅ΠΉ сфСры ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ…. ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π΄Π°Π½Π½Ρ‹Ρ… Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ пСрСтаскивания ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ копирования ΠΈ вставки. ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ пСрСтаскивания Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ копирования ΠΈ вставки ΠΈΠ»ΠΈ вырСзания ΠΈ вставки, которая ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈΠ»ΠΈ прилоТСния Π² Π΄Ρ€ΡƒΠ³ΠΎΠ΅ с использованиСм Π±ΡƒΡ„Π΅Ρ€Π° ΠΎΠ±ΠΌΠ΅Π½Π°. Π’ ΠΎΠ±ΠΎΠΈΡ… Ρ‚ΠΈΠΏΠ°Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ трСбуСтся:

исходный ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ Π΄Π°Π½Π½Ρ‹Π΅;

способ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ хранСния ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…;

Ρ†Π΅Π»Π΅Π²ΠΎΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅.

Π’ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ копирования ΠΈ вставки для Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ хранСния ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ систСмный Π±ΡƒΡ„Π΅Ρ€ ΠΎΠ±ΠΌΠ΅Π½Π°; Π² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ пСрСтаскивания для хранСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ DataObject. ΠšΠΎΠ½Ρ†Π΅ΠΏΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π΄Π°Π½Π½Ρ‹Ρ… состоит ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΠ°Ρ€ Object, содСрТащих фактичСскиС Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π΄Π°Π½Π½Ρ‹Ρ….

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ пСрСтаскивания ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ пСрСтаскивания ΠΏΡƒΡ‚Π΅ΠΌ Π²Ρ‹Π·ΠΎΠ²Π° статичСского ΠΌΠ΅Ρ‚ΠΎΠ΄Π° DragDrop.DoDragDrop ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π² Π½Π΅Π³ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…. ΠœΠ΅Ρ‚ΠΎΠ΄ DoDragDrop Π±ΡƒΠ΄Π΅Ρ‚ автоматичСски Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π² DataObject ΠΏΡ€ΠΈ нСобходимости. Для большСго контроля Π½Π°Π΄ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π² DataObject ΠΏΠ΅Ρ€Π΅Π΄ ΠΈΡ… ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ΠΉ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄ DoDragDrop. ЦСль пСрСтаскивания ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· DataObject. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свСдСния ΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… см. Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Π”Π°Π½Π½Ρ‹Π΅ ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ….

Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΈ Ρ†Π΅Π»Π΅Π²ΠΎΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ пСрСтаскивания ΡΠ²Π»ΡΡŽΡ‚ΡΡ элСмСнтами ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса; ΠΎΠ΄Π½Π°ΠΊΠΎ Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π² Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ прСдставлСния. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ для Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ прСдставлСния пСрСтаскиваСмых Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚Π°ΠΊΠΎΠ³ΠΎ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ происходит ΠΏΡ€ΠΈ пСрСтаскивании Ρ„Π°ΠΉΠ»ΠΎΠ² Π² ΠΏΡ€ΠΎΠ²ΠΎΠ΄Π½ΠΈΠΊΠ΅. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ взаимодСйствиС прСдоставляСтся ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ ΠΏΡƒΡ‚Π΅ΠΌ измСнСния курсора для прСдставлСния воздСйствия, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ опСрация пСрСтаскивания ΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Π΄Π°Π½Π½Ρ‹Π΅: Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ»ΠΈ ΠΊΠΎΠΏΠΈΡ€ΡƒΡŽΡ‚ΡΡ.

Π­Ρ„Ρ„Π΅ΠΊΡ‚Ρ‹ пСрСтаскивания

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ пСрСтаскивания ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ Π²ΠΎΠ·Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅. НапримСр, Π΄Π°Π½Π½Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒΡΡ. WPF Π·Π°Π΄Π°Π΅Ρ‚ пСрСчислСниС DragDropEffects, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для указания эффСкта ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ пСрСтаскивания. Π’ источникС пСрСтаскивания ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ эффСкты, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚, Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ DoDragDrop. Π’ Ρ†Π΅Π»ΠΈ пСрСтаскивания ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹ΠΉ эффСкт Π² свойствС Effects класса DragEventArgs. Если Π² Ρ†Π΅Π»ΠΈ пСрСтаскивания ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹ΠΉ эффСкт Π·Π°Π΄Π°Π½ Π² событии DragOver, Ρ‚ΠΎ информация пСрСдаСтся ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² источник пСрСтаскивания Π² событии GiveFeedback. Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ пСрСтаскивания ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ эти свСдСния для информирования ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, ΠΊΠ°ΠΊΠΎΠ΅ воздСйствиС Π½Π° Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ Ρ†Π΅Π»ΡŒ пСрСтаскивания. Когда Π΄Π°Π½Π½Ρ‹Π΅ Π²ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ, Ρ†Π΅Π»ΡŒ пСрСтаскивания ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ фактичСский эффСкт Π² событии Drop. Π­Ρ‚ΠΈ свСдСния ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² источник пСрСтаскивания Π² качСствС Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ³ΠΎ значСния ΠΌΠ΅Ρ‚ΠΎΠ΄Π° DoDragDrop. Если Ρ†Π΅Π»ΡŒ пСрСтаскивания Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ эффСкт, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π½Π΅Ρ‚ Π² спискС allowedEffects источников пСрСтаскивания, опСрация пСрСтаскивания отмСняСтся Π±Π΅Π· фактичСской ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ….

Π’Π°ΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π² WPF значСния DragDropEffects ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для обСспСчСния взаимодСйствия ΠΌΠ΅ΠΆΠ΄Ρƒ источником пСрСтаскивания ΠΈ Ρ†Π΅Π»ΡŒΡŽ пСрСтаскивания ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ эффСктов ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ пСрСтаскивания. ЀактичСский эффСкт ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ пСрСтаскивания зависит ΠΎΡ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΊΠΎΠ΄Π°, написанного Π²Π°ΠΌΠΈ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ.

НапримСр, Ρ†Π΅Π»ΡŒ пСрСтаскивания ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ пСрСтаскивания Π² Π½Π΅Π³ΠΎ Π΄Π°Π½Π½Ρ‹Ρ… Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ…. Однако для пСрСмСщСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒΡΡ Π² Ρ†Π΅Π»Π΅Π²ΠΎΠΉ элСмСнт ΠΈ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒΡΡ ΠΈΠ· исходного элСмСнта. Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ элСмСнт ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ…, Π½ΠΎ Ссли Π²Ρ‹ Π½Π΅ прСдоставитС ΠΊΠΎΠ΄ для удалСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· исходного элСмСнта, Π΄Π°Π½Π½Ρ‹Π΅ Π² ΠΈΡ‚ΠΎΠ³Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ, Π° Π½Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒΡΡ.

Бобытия пСрСтаскивания

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ пСрСтаскивания ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ модСль управлСния событиями. Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ ΠΈ Ρ†Π΅Π»ΡŒ пСрСтаскивания ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ стандартный Π½Π°Π±ΠΎΡ€ событий для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ пСрСтаскивания. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ… ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ стандартныС события пСрСтаскивания. Π­Ρ‚ΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ события Π² классС DragDrop. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свСдСния ΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… событиях см. Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠžΠ±Ρ‰ΠΈΠ΅ свСдСния ΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… событиях.

Бобытия источника пСрСтаскивания

Π‘ΠΎΠ±Ρ‹Ρ‚ΠΈΠ΅Π˜Ρ‚ΠΎΠ³ΠΈ
GiveFeedbackΠ­Ρ‚ΠΎ событиС Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ постоянно Π²ΠΎ врСмя ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ пСрСтаскивания ΠΈ позволяСт источнику пСрСтаскивания ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ свСдСния ΠΎ взаимодСйствии. ВзаимодСйствиС ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ дСмонстрируСтся ΠΏΡƒΡ‚Π΅ΠΌ измСнСния Π²ΠΈΠ΄Π° курсора ΠΌΡ‹ΡˆΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½Π½Ρ‹Π΅ Ρ†Π΅Π»ΡŒΡŽ пСрСтаскивания эффСкты ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ пСрСтаскивания. Π­Ρ‚ΠΎ событиС восходящСй ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ.
QueryContinueDragΠ­Ρ‚ΠΎ событиС Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ состояния клавиши ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ ΠΈΠ»ΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΌΡ‹ΡˆΠΈ Π²ΠΎ врСмя ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ пСрСтаскивания ΠΈ позволяСт источнику пСрСтаскивания ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ пСрСтаскивания Π² зависимости ΠΎΡ‚ состояния клавиши ΠΈΠ»ΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ. Π­Ρ‚ΠΎ событиС восходящСй ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ.
PreviewGiveFeedbackΠ­Ρ‚ΠΎ вСрсия нисходящСй ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ события GiveFeedback.
PreviewQueryContinueDragΠ­Ρ‚ΠΎ вСрсия нисходящСй ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ события QueryContinueDrag.

Бобытия Ρ†Π΅Π»ΠΈ пСрСтаскивания

Π‘ΠΎΠ±Ρ‹Ρ‚ΠΈΠ΅Π˜Ρ‚ΠΎΠ³ΠΈ
DragEnterΠ­Ρ‚ΠΎ событиС происходит, ΠΊΠΎΠ³Π΄Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ пСрСтаскиваСтся Π² Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ Ρ†Π΅Π»ΠΈ пСрСтаскивания. Π­Ρ‚ΠΎ событиС восходящСй ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ.
DragLeaveΠ­Ρ‚ΠΎ событиС происходит, ΠΊΠΎΠ³Π΄Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ пСрСтаскиваСтся Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ Ρ†Π΅Π»ΠΈ пСрСтаскивания. Π­Ρ‚ΠΎ событиС восходящСй ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ.
DragOverΠ­Ρ‚ΠΎ событиС происходит постоянно, ΠΊΠΎΠ³Π΄Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ пСрСтаскиваСтся (пСрСмСщаСтся) Π² Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ Ρ†Π΅Π»ΠΈ пСрСтаскивания. Π­Ρ‚ΠΎ событиС восходящСй ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ.
DropΠ­Ρ‚ΠΎ событиС происходит, ΠΊΠΎΠ³Π΄Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ вставляСтся Π² Ρ†Π΅Π»ΡŒ пСрСтаскивания. Π­Ρ‚ΠΎ событиС восходящСй ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ.
PreviewDragEnterΠ­Ρ‚ΠΎ вСрсия нисходящСй ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ события DragEnter.
PreviewDragLeaveΠ­Ρ‚ΠΎ вСрсия нисходящСй ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ события DragLeave.
PreviewDragOverΠ­Ρ‚ΠΎ вСрсия нисходящСй ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ события DragOver.
PreviewDropΠ­Ρ‚ΠΎ вСрсия нисходящСй ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ события Drop.

Для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ событий пСрСтаскивания для экзСмпляров ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ событий, пСрСчислСнных Π² Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ… Π²Ρ‹ΡˆΠ΅. Для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ событий пСрСтаскивания Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ класса ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ On*Event ΠΈ On*PreviewEvent. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свСдСния см. Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠœΠ°Ρ€ΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΏΠ΅Ρ€Π΅Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹Ρ… событий ΠΊΠ°ΠΊ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° классов.

РСализация пСрСтаскивания

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ источником пСрСтаскивания, Ρ†Π΅Π»ΡŒΡŽ пСрСтаскивания ΠΈΠ»ΠΈ ΠΈ Ρ‚Π΅ΠΌ, ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌ. Π§Ρ‚ΠΎΠ±Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±Π°Π·ΠΎΠ²ΠΎΠ΅ пСрСтаскиваниС, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ для инициирования ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ пСрСтаскивания ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ пСрСтаскиваСмых Π΄Π°Π½Π½Ρ‹Ρ…. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ взаимодСйствиС пСрСтаскивания ΠΏΡƒΡ‚Π΅ΠΌ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… событий пСрСтаскивания.

Для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ пСрСтаскивания Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ.

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ элСмСнта, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ источником пСрСтаскивания. Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ пСрСтаскивания ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ UIElement ΠΈΠ»ΠΈ ContentElement.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° событий Π² источникС пСрСтаскивания, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ пСрСтаскивания. Π­Ρ‚ΠΎ событиС ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ являСтся событиСм MouseMove.

Π’Ρ‹Π·ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄Π° DoDragDrop Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ΅ событий источника пСрСтаскивания для ΠΈΠ½ΠΈΡ†ΠΈΠ°Ρ†ΠΈΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ пСрСтаскивания. Π£ΠΊΠ°Π·Π°Π½ΠΈΠ΅ источника пСрСтаскивания, ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½Π½Ρ‹Π΅ эффСкты Π² Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° DoDragDrop.

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ элСмСнта, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Ρ†Π΅Π»ΡŒΡŽ пСрСтаскивания. ЦСлью пСрСтаскивания ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ UIElement ΠΈΠ»ΠΈ ContentElement.

Π’ Ρ†Π΅Π»ΠΈ пСрСтаскивания создайтС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ событий Drop для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ пСрСтаскиваСмых Π΄Π°Π½Π½Ρ‹Ρ….

Π’ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ΅ событий Drop ΠΈΠ·Π²Π»Π΅ΠΊΠΈΡ‚Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· DragEventArgs с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² GetDataPresent ΠΈ GetData.

Π’ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ΅ событий Drop ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ эти Π΄Π°Π½Π½Ρ‹Π΅ для выполнСния Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ пСрСтаскивания.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ пСрСтаскивания ΠΏΡƒΡ‚Π΅ΠΌ создания ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° DataObject ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… событий источника ΠΈ Ρ†Π΅Π»ΠΈ пСрСтаскивания, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π·Π°Π΄Π°Ρ‡Π°Ρ….

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ»ΠΈ нСсколько элСмСнтов Π΄Π°Π½Π½Ρ‹Ρ…, создайтС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ DataObject для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄ DoDragDrop.

Для выполнСния Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… дСйствий Π² процСссС пСрСтаскивания ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°ΠΉΡ‚Π΅ события DragEnter, DragOver ΠΈ DragLeave Π² Ρ†Π΅Π»ΠΈ пСрСтаскивания.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π²ΠΈΠ΄ курсора ΠΌΡ‹ΡˆΠΈ, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°ΠΉΡ‚Π΅ событиС GiveFeedback Π² источникС пСрСтаскивания.

Для измСнСния способа ΠΎΡ‚ΠΌΠ΅Π½Ρ‹ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ пСрСтаскивания ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°ΠΉΡ‚Π΅ событиС QueryContinueDrag Π² источникС пСрСтаскивания.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ пСрСтаскивания

Π’ этом Ρ€Π°Π·Π΄Π΅Π»Π΅ описываСтся рСализация пСрСтаскивания для элСмСнта Ellipse. Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ Ellipse являСтся ΠΊΠ°ΠΊ источником, Ρ‚Π°ΠΊ ΠΈ Ρ†Π΅Π»ΡŒΡŽ пСрСтаскивания. ΠŸΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ β€” это строковоС прСдставлСниС свойства Fill эллипса. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ XAML ΠΏΠΎΠΊΠ°Π·Π°Π½ элСмСнт Ellipse ΠΈ связанныС с пСрСтаскиваниСм события, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚. ПолноС описаниС дСйствий ΠΏΠΎ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ пСрСтаскивания см. Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ ПошаговоС руководство. Π’ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ пСрСтаскивания для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ элСмСнта управлСния.

Π’ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ элСмСнта Π² качСствС источника пСрСтаскивания

ΠžΠ±ΡŠΠ΅ΠΊΡ‚, ΡΠ²Π»ΡΡŽΡ‰ΠΈΠΉΡΡ источником пСрСтаскивания, ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π°:

ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Π½Π°Ρ‡Π°Π»Π° пСрСтаскивания;

ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ пСрСтаскивания;

ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…;

ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½Π½ΠΎΠ³ΠΎ воздСйствия ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ пСрСтаскивания Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ пСрСтаскивания ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ свСдСния ΠΎ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½Π½Ρ‹Ρ… дСйствиях (ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅, ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ»ΠΈ отсутствиС дСйствий) ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ пСрСтаскивания Π½Π° основании Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ наТатия клавиши ESC Π²ΠΎ врСмя пСрСтаскивания.

Π’Π°ΡˆΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° происходит пСрСтаскиваниС, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ пСрСтаскивания ΠΏΡƒΡ‚Π΅ΠΌ Π²Ρ‹Π·ΠΎΠ²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° DoDragDrop. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ это происходит, ΠΊΠΎΠ³Π΄Π° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ событиС MouseMove Π² пСрСтаскиваСмом элСмСнтС ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΎΠΉ клавишС ΠΌΡ‹ΡˆΠΈ. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ пСрСтаскивания Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ΅ событий MouseMove элСмСнта Ellipse, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΅Π³ΠΎ источником пСрСтаскивания. ΠŸΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ β€” это строковоС прСдставлСниС свойства Fill эллипса.

Π’ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ΅ событий MouseMove Π²Ρ‹Π·ΠΎΠ²ΠΈΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ DoDragDrop для ΠΈΠ½ΠΈΡ†ΠΈΠ°Ρ†ΠΈΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ пСрСтаскивания. ΠœΠ΅Ρ‚ΠΎΠ΄ DoDragDrop ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Ρ‚Ρ€ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°.

dragSource β€” ссылка Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ зависимости, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся источником ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…; ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ это источник события MouseMove.

data β€” ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, содСрТащий ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅, Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Π΅ Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ DataObject.

allowedEffects β€” ΠΎΠ΄Π½ΠΎ ΠΈΠ· Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ пСрСчислСния DragDropEffects, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ опрСдСляСт Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½Π½Ρ‹Π΅ эффСкты ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ пСрСтаскивания.

Π’ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ data ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½ любой сСриализуСмый ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. Если Π΄Π°Π½Π½Ρ‹Π΅ Π΅Ρ‰Π΅ Π½Π΅ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ DataObject, ΠΎΠ½ΠΈ автоматичСски Π·Π°ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ Π² Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ DataObject. Для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… элСмСнтов Π΄Π°Π½Π½Ρ‹Ρ… Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ DataObject ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄ DoDragDrop. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свСдСния см. Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Π”Π°Π½Π½Ρ‹Π΅ ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ….

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ allowedEffects ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для указания, ΠΊΠ°ΠΊΠΈΠ΅ дСйствия с ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ источник пСрСтаскивания Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ Ρ†Π΅Π»ΠΈ пСрСтаскивания. ΠžΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ значСния для источника пСрСтаскивания β€” Copy, Move ΠΈ All.

ЦСль пСрСтаскивания Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹Π΅ эффСкты пСрСтаскивания Π΄Π°Π½Π½Ρ‹Ρ…. НапримСр, Ссли Ρ†Π΅Π»ΡŒ пСрСтаскивания Π½Π΅ распознаСт Ρ‚ΠΈΠΏ вставляСмых Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚ΠΎ ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚ΠΊΠ»ΠΎΠ½ΠΈΡ‚ΡŒ эти Π΄Π°Π½Π½Ρ‹Π΅, Π·Π°Π΄Π°Π² None Π² качСствС Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½Π½Ρ‹Ρ… эффСктов. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΠ½Π° Π΄Π΅Π»Π°Π΅Ρ‚ это Π² своСм ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ΅ событий DragOver.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ пСрСтаскивания ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ события GiveFeedback ΠΈ QueryContinueDrag. Π­Ρ‚ΠΈ события ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ, Ссли события Π½Π΅ ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ ΠΊΠ°ΠΊ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Π΅. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ эти события ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ, Ссли Π½Π΅Ρ‚ особой нСобходимости измСнСния ΠΈΡ… повСдСния ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.

Π‘ΠΎΠ±Ρ‹Ρ‚ΠΈΠ΅ GiveFeedback Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ постоянно, ΠΏΠΎΠΊΠ° выполняСтся пСрСтаскиваниС источника пСрСтаскивания. ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для этого события провСряСт, находится Π»ΠΈ источник пСрСтаскивания Π½Π°Π΄ допустимым ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΌ располоТСниСм сброса. Если это Ρ‚Π°ΠΊ, Ρ‚ΠΎ ΠΎΠ½ провСряСт Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½Π½Ρ‹Π΅ эффСкты Ρ†Π΅Π»ΠΈ пСрСтаскивания. Π—Π°Ρ‚Π΅ΠΌ ΠΎΠ½ прСдоставляСт ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌΡƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ ΠΎΡ‚Π·Ρ‹Π² ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½Π½Ρ‹Ρ… эффСктов пСрСтаскивания. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ это выполняСтся ΠΏΡƒΡ‚Π΅ΠΌ измСнСния курсора ΠΌΡ‹ΡˆΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π·Π°ΠΏΡ€Π΅Ρ‚ пСрСтаскивания, ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅. Π­Ρ‚ΠΎ событиС слСдуСт ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ курсоры для прСдоставлСния ΠΎΡ‚Π·Ρ‹Π²Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ. Если Π²Ρ‹ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚Π΅ это событиС, Π½Π΅ Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ ΠΏΠΎΠΌΠ΅Ρ‡Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΊΠ°ΠΊ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π½Π΅ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ» ваш ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ.

Π‘ΠΎΠ±Ρ‹Ρ‚ΠΈΠ΅ QueryContinueDrag Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ постоянно, ΠΏΠΎΠΊΠ° выполняСтся пСрСтаскиваниС источника пСрСтаскивания. МоТно ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ это событиС, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠ΅ дСйствиС Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ пСрСтаскивания, Π½Π° основС состояния клавиш ESC, SHIFT, CTRL ΠΈ ALT, Π° Ρ‚Π°ΠΊΠΆΠ΅ состояния ΠΊΠ½ΠΎΠΏΠΎΠΊ ΠΌΡ‹ΡˆΠΈ. ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для этого события отмСняСт ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ пСрСтаскивания ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ клавиши ESC ΠΈ сбрасываСт Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΈ отпускании ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΌΡ‹ΡˆΠΈ.

Π­Ρ‚ΠΈ события Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ постоянно Π²ΠΎ врСмя ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ пСрСтаскивания. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ слСдуСт ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ рСсурсоСмких Π·Π°Π΄Π°Ρ‡ Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°Ρ… событий. НапримСр, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ курсор вмСсто создания Π½ΠΎΠ²ΠΎΠ³ΠΎ курсора ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ события GiveFeedback.

Π’ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ элСмСнта Π² качСствС Ρ†Π΅Π»ΠΈ пСрСтаскивания

ΠžΠ±ΡŠΠ΅ΠΊΡ‚, ΡΠ²Π»ΡΡŽΡ‰ΠΈΠΉΡΡ Ρ†Π΅Π»ΡŒΡŽ пСрСтаскивания, ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π°:

ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΎΠ½ являСтся допустимой Ρ†Π΅Π»ΡŒΡŽ пСрСтаскивания;

Ρ€Π΅Π°ΠΊΡ†ΠΈΡŽ Π½Π° источник пСрСтаскивания, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ пСрСтаскиваСтся Π½Π°Π΄ Ρ†Π΅Π»Π΅Π²Ρ‹ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ;

ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ находятся Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ;

ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ вставляСмых Π΄Π°Π½Π½Ρ‹Ρ….

Π‘ΠΎΠ±Ρ‹Ρ‚ΠΈΠ΅ DragEnter Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚, ΠΊΠΎΠ³Π΄Π° Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅Ρ‚Π°ΡΠΊΠΈΠ²Π°ΡŽΡ‚ΡΡ Π² Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ Ρ†Π΅Π»ΠΈ пСрСтаскивания. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Π²Ρ‹ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚Π΅ это событиС, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ просмотр эффСктов ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ пСрСтаскивания, Ссли это трСбуСтся для вашСго прилоТСния. НС устанавливайтС свойство DragEventArgs.Effects Π² событии DragEnter, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ Π² событии DragOver.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ событий DragEnter для элСмСнта Ellipse. Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ выполняСт ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ просмотр эффСктов ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ пСрСтаскивания ΠΏΡƒΡ‚Π΅ΠΌ сохранСния Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ кисти Fill. Π—Π°Ρ‚Π΅ΠΌ ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ GetDataPresent для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ, содСрТит Π»ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ DataObject, пСрСтаскиваСмый Π½Π°Π΄ эллипсом, строковыС Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π² Brush. Если Π΄Π°, Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ·Π²Π»Π΅ΠΊΠ°ΡŽΡ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° GetData Π—Π°Ρ‚Π΅ΠΌ ΠΎΠ½ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ΡΡ Π² Brush ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΠΊ эллипсу. Π­Ρ‚ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ отмСняСтся Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ΅ событий DragLeave. Если Π΄Π°Π½Π½Ρ‹Π΅ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π² Brush, Π½ΠΈΠΊΠ°ΠΊΠΈΠ΅ дСйствия Π½Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ.

Π‘ΠΎΠ±Ρ‹Ρ‚ΠΈΠ΅ DragOver постоянно Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΏΡ€ΠΈ пСрСтаскивании Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° Ρ†Π΅Π»ΡŒ пСрСтаскивания. Π­Ρ‚ΠΎ событиС являСтся спарСнным с событиСм GiveFeedback Π² источникС пСрСтаскивания. Π’ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ΅ событий DragOver, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ GetDataPresent ΠΈ GetData для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ, ΠΈΠΌΠ΅ΡŽΡ‚ Π»ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Ρ†Π΅Π»ΡŒ пСрСтаскивания. МоТно Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, Π½Π°ΠΆΠ°Ρ‚Ρ‹ Π»ΠΈ клавиши-ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚, ΠΊΠ°ΠΊΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ β€” пСрСмСщСния ΠΈΠ»ΠΈ копирования. ПослС выполнСния этих ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ Π²Ρ‹ устанавливаСтС свойство DragEventArgs.Effects, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²Π΅Π΄ΠΎΠΌΠΈΡ‚ΡŒ источник пСрСтаскивания ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊΠΎΠΉ эффСкт ΠΎΠΊΠ°ΠΆΠ΅Ρ‚ сброс Π΄Π°Π½Π½Ρ‹Ρ…. Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ пСрСтаскивания ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ эти свСдСния Π² Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°Ρ… события GiveFeedback ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π΄Π°Ρ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ курсор, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ ΠΎΡ‚Π·Ρ‹Π² для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ событий DragOver для элСмСнта Ellipse. Π’ этом ΠΊΠΎΠ΄Π΅ провСряСтся, содСрТит Π»ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ DataObject, пСрСтаскиваСмый Π½Π°Π΄ эллипсом, строковыС Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π² Brush. Если содСрТит, Ρ‚ΠΎ ΠΊΠΎΠ΄ устанавливаСт для свойства DragEventArgs.Effects Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Copy. Π­Ρ‚ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ источнику пСрСтаскивания, Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² эллипс. Если Π΄Π°Π½Π½Ρ‹Π΅ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π² Brush, для свойства DragEventArgs.Effects устанавливаСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ None. Π­Ρ‚ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ источнику пСрСтаскивания, Ρ‡Ρ‚ΠΎ эллипс Π½Π΅ являСтся допустимым ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΌ располоТСниСм сброса для Π΄Π°Π½Π½Ρ‹Ρ….

Π‘ΠΎΠ±Ρ‹Ρ‚ΠΈΠ΅ DragLeave Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚, ΠΊΠΎΠ³Π΄Π° Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅Ρ‚Π°ΡΠΊΠΈΠ²Π°ΡŽΡ‚ΡΡ Π·Π° Π³Ρ€Π°Π½ΠΈΡ†Ρƒ Ρ†Π΅Π»Π΅Π²ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π±Π΅Π· сбрасывания. ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° этого события позволяСт ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ дСйствия, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Ρ‹ Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ΅ событий DragEnter.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ событий DragLeave для элСмСнта Ellipse. Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ отмСняСт ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ просмотр, Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹ΠΉ Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ΅ событий DragEnter, ΠΏΡƒΡ‚Π΅ΠΌ примСнСния сохранСнного ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Brush ΠΊ эллипсу.

Π‘ΠΎΠ±Ρ‹Ρ‚ΠΈΠ΅ Drop Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΏΡ€ΠΈ сбросС Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ†Π΅Π»ΡŒ пСрСтаскивания; ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ это происходит ΠΏΡ€ΠΈ отпускании ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΌΡ‹ΡˆΠΈ. Π’ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ΅ событий Drop Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ GetData для извлСчСния ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° DataObject ΠΈ выполнСния ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠΉ для вашСго прилоТСния. Π‘ΠΎΠ±Ρ‹Ρ‚ΠΈΠ΅ Drop Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ пСрСтаскивания.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ событий Drop для элСмСнта Ellipse. Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ примСняСт эффСкты ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ пСрСтаскивания. Он Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π΅Π½ ΠΊΠΎΠ΄Ρƒ Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ΅ событий DragEnter. Он провСряСт, содСрТит Π»ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ DataObject, пСрСтаскиваСмый Π½Π°Π΄ эллипсом, строковыС Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π² Brush. Если это Ρ‚Π°ΠΊ, Ρ‚ΠΎ ΠΊ эллипсу примСняСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Brush. Если Π΄Π°Π½Π½Ρ‹Π΅ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π² Brush, Π½ΠΈΠΊΠ°ΠΊΠΈΠ΅ дСйствия Π½Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *