יום שני, 11 באוקטובר 2010

Drag -n- Drop - 'זריקת' קבצים אל תיבת רשימה (listbox) או תיבת טקסט


קובץ דוגמא:  
https://sites.google.com/site/elsnir/Home/dragDrop.Example.zip

אפשרות 'זריקת' קבצים על תיבת טקסט, על ListBox , על טופס כללי או על פקדים אחרים יכולה להיות שימושית.
כאן נראה כיצד עושים זאת.

ראשית עלינו לבחור control-פקד שיכול לשמש אותנו. דוגמא ראשונה תהיה ListBox.
בחלונית צד Properties נשנה את אפשרות AllowDrop ל-True.
נלחץ על ה'ברק' בראש החלונית כדי לעבור להגדרת Events ונבחר באפשרויות DragEnter, DragDrop.
נגדיר אותן כך:

private void listBox1_DragEnter(object sender, DragEventArgs e)
{
   if (e.Data.GetDataPresent(DataFormats.FileDrop, false))
   {
      e.Effect = DragDropEffects.Copy; //.All;
   }
}

private void listBox1_DragDrop(object sender, DragEventArgs e)
{
   foreach (string fileName in 
           (string[])e.Data.GetData(DataFormats.FileDrop))
   {
      listBox1.Items.Add(fileName);
   }
}


עבור TextBox - תיבת טקסט נשנה רק את האירוע השני, DragDrop:

private void textBox1_DragDrop(object sender, DragEventArgs e)
{
   textBox1.Text
         ((string[])e.Data.GetData(DataFormats.FileDrop))[0];
}
נשים לב לחלקים שהדגשתי:
נקבל את המידע מאירוע ה'זריקה' של הקבצים על הטופס בתור מערך של שמות הקבצים.
כיוון שכאן מתבצעת הזריקה על תיבת טקסט פשוטה היכולה להכיל שם קובץ אחד בלבד נבחר באיבר הראשון [0] שיש במערך.
ניתן כמובן להגדיר תיבת טקסט בעלת אפשרות שורות מרובות Multiline ולשנות את הקוד כך שתיבת הטקסט תקבל את כל שמות הקבצים הנזרקים עליה, עם הפרדה של רווחים בין השמות.
}




אין תגובות:

הוסף רשומת תגובה