Drag and Drop funkcionalnost

Omogućava korisniku da prenese tekst sliku ili drugi objekat iz jedne kontrole u drugu (povuci i spusti). Ova funkcionalnost je slična Copy - Paste funkcionalnosti. Drag and Drop funkcija se ostvaruje korišćenjem odgovarajućih događaja za izvornu i odredišnu kontrolu.


Događaji izvorišne (source) kontrole

MouseDown događaj se trigeruje kada je miš kliknut iznad izvorišne kontrole. U metodi koja hendluje ovaj događaj poziva se metoda DoDragDrop. GiveFeedBack događaj omogućava korisniku da definiše izgled pokazivača miša. QueryContinueDrag događaj omogućava da se poništi ili nastavi Drag and Drop operacija.


Događaji odredišne kontrole

DragEnter događaj se dešava kada se objekat koji se prevlači prenese unutar granica odredišne kontrole. Event handler DragEnter događaja dobija objekat DragEventArgs. DragOver događaj se dešava kada se objekat prevuče iznad odredišne kontrole. Event hendleru DragOver događaja se prosleđuje DragEventArgs objekat. DragDrop događaj se dešava kada se taster miša otpusti iznad odredišne kontrole. Event hendleru DragDrop događaja se prosleđuje DragEventArgs objekat. DragLeave se dešava kada se objekat vuče izvan granica odredišne kontrole.


Sekvenca događaja kod Drag and Drop operacije

Unutar MouseDown event hendlera izvorišne kontrole poziva se DoDragDrop metoda. DoDragDrop kopira željene podatke u DataObject objekat i podešava flegove koji definišu šta se može uraditi sa tim podacima. Zatim se generišu događaji GiveFeedBack i QueryContinueDrag. Pointer miša se prevlači iznad odredišne kontrole i generiše se DragEnter događaj. Za odredišnu kontrolu potrebno je podesiti svojstvo AllowDrop na vrednost True. Event handler prima objekat DragEventArgs i on služi da se odredi da li su podaci koji se prevlače pogodni za odredišnu kontrolu. Korisnik otpušta taster miša i generiše DragDrop događaj.


DragDropEffects enumeracija

Unutar metode DoDragDrop moraju se specificirati efekti prevlačenja. Ovi efekti su instance DragDropEffects enumeracije. Vrednosti enumeracije su:

  • All, podaci se premeštaju, tj. uklanjaju sa izvorišne kontrole i skroluju na odredišnu
  • Copy, podaci se kopiraju u odredišnu kontrolu
  • Link, podaci se linkovani za odredište
  • Move, podaci se prenose do odredišta
  • None, odredišna kontrola ne prihvata podatke
  • Scroll , počinje skrolovanje ili se trenutno dešava na odredištu


Primer realizacije Drag and Drop operacije

 

 

U primeru na slici želimo da omogućim prevlačenje teksta iz jedne u drugu TextBox kontrolu. Generiše se MouseDown događaj izvorišne kontrole. Za odredišnu kontrolu postavlja se svojstvo AllowDrop na vrednost true.


private void textBox1_MouseDown(object sender, MouseEventArgs e)
{
    textBox1.DoDragDrop(textBox1.Text, DragDropEffects.Move | DragDropEffects.Copy);
}

private void textBox2_DragEnter(object sender, DragEventArgs e)
{
    if (e.Data.GetDataPresent(DataFormats.Text))
    {
        e.Effect = DragDropEffects.Copy;
    }
}
  
 

Unutar MouseDows event handlera za kontrolu TextBox1 poziva se metoda DoDragDrop čime se započinje operacija Drag and Drop. Primenjuju se efekti Move i Copy.Podaci se kopiraju unutar objekta tip DataObject. Unutar DragEnter događaja TextBox2 kontrole ispituje se da li su podaci pogodni za ovu kontrolu
  korišćenjem metode GetDataPresent i ukoliko jesu definiše se efekat "Drag and Drop" operacije za odredišnu kontrolu.

private void textBox2_DragDrop(object sender, DragEventArgs e)
{
    textBox2.Text = (string)e.Data.GetData(DataFormats.Text);
}

 
Unutar DragDrop događaja vrši se kopiranje podataka u odredišnu kontrolu korišćenjem metode GetData objekta DataObject.

u izradi
Dodaj komentar Sviđa mi se - (0) Ne sviđa mi se - (0)    

  • Implementacija Drag-and-Drop funkcionalnosti 1
  • Implementacija Drag-and-Drop funkcionalnosti 2
  • Implementacija Drag-and-Drop funkcionalnosti 3