Ik ben aan het stoeien met Drag&Drop. Wat ik uiteindelijk wil is dat ik een plaatje kan selecteren in Explorer en die in mijn picturebox kan 'gooien'.
Dit lukt al niet goed, dus ben ik al de hele avond aan het lezen en uitproberen.
Ik kom vaak hetzelfde voorbeeld tegen:
Een listbox op je form, je gooit er wat bestanden op en de bestandsnamen worden in de listbox getoond.
Maar ook als ik dat voorbeeld probeer, gebeurt er niets. Mijn DragOver, DragDrop en DragEnter events worden niet getriggerd.
Uiteraard heb ik AllowDrop op true staan, voor zowel de listbox als het form.
Deze property staat ook op true tijdens het debuggen.
Ik gebruik C# in VS2010 op een Win7 laptop.
Hier wat designer code:
En hier mijn event handlers:
Zoals gezegd worden bovenstaande drag methoden niet aangeroepen. Als ik de bestanden drag naar mijn listbox, blijft mijn cursor een rondje met een streep erdoor (Nodragging allowed).
Het lijkt erop dat ik nog iets vergeet aan te zetten, maar ik kom er niet uit.
Iemand nog een suggestie?
Dit lukt al niet goed, dus ben ik al de hele avond aan het lezen en uitproberen.
Ik kom vaak hetzelfde voorbeeld tegen:
Een listbox op je form, je gooit er wat bestanden op en de bestandsnamen worden in de listbox getoond.
Maar ook als ik dat voorbeeld probeer, gebeurt er niets. Mijn DragOver, DragDrop en DragEnter events worden niet getriggerd.
Uiteraard heb ik AllowDrop op true staan, voor zowel de listbox als het form.
Deze property staat ook op true tijdens het debuggen.
Ik gebruik C# in VS2010 op een Win7 laptop.
Hier wat designer code:
C#:
1
2
3
4
5
6
7
8
9
10
| this.listBox1.AllowDrop = true; this.listBox1.FormattingEnabled = true; this.listBox1.Location = new System.Drawing.Point(12, 12); this.listBox1.Name = "listBox1"; this.listBox1.Size = new System.Drawing.Size(204, 173); this.listBox1.TabIndex = 3; this.listBox1.MouseClick += new System.Windows.Forms.MouseEventHandler(this.listBox1_MouseClick); this.listBox1.DragDrop += new System.Windows.Forms.DragEventHandler(this.listBox1_DragDrop); this.listBox1.DragEnter += new System.Windows.Forms.DragEventHandler(this.listBox1_DragEnter); this.listBox1.DragOver += new System.Windows.Forms.DragEventHandler(this.listBox1_DragOver); |
En hier mijn event handlers:
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
| private void listBox1_DragEnter(object sender, DragEventArgs e) { if (e.Data.GetDataPresent(DataFormats.FileDrop)) { e.Effect = DragDropEffects.All; } else { e.Effect = DragDropEffects.None; } } private void listBox1_DragDrop(object sender, DragEventArgs e) { string[] s = (string[])e.Data.GetData(DataFormats.FileDrop, false); int i; for (i = 0; i < s.Length; i++) { listBox1.Items.Add(s[i]); } } private void listBox1_DragOver(object sender, DragEventArgs e) { if ((e.AllowedEffect & DragDropEffects.Copy) == DragDropEffects.Copy) { e.Effect = DragDropEffects.Copy; } } private void listBox1_MouseClick(object sender, MouseEventArgs e) { MessageBox.Show("listBox1.AllowDrop:" + this.listBox1.AllowDrop); } |
Zoals gezegd worden bovenstaande drag methoden niet aangeroepen. Als ik de bestanden drag naar mijn listbox, blijft mijn cursor een rondje met een streep erdoor (Nodragging allowed).
Het lijkt erop dat ik nog iets vergeet aan te zetten, maar ik kom er niet uit.
Iemand nog een suggestie?