Entwickler-Ecke
WinForms - Drag & Drop in Listbox ohne kompletten Pfad
Scarecraft - Fr 18.04.08 19:13
Titel: Drag & Drop in Listbox ohne kompletten Pfad
Hallo an alle ,
also ich hab ein Event , das startet wenn ich was in eine Listbox ziehe .
Nunja das klappt alles toll , aber ich möchte nicht den ganze link "C:\\bla\\blaaaa\bla.mp3"
sondern nur :"bla.mp3" stehen haben ,,...
hatte das selbe prob bei openfile hab das so gelöst :
C#-Quelltext
1:
| listBox1.Items.Add(System.IO.Path.GetFileName(open.FileName)); |
Naja hier der Eventcode des Drag and Drop erreignisses der Listbox:
C#-Quelltext
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:
| private void Form1_Load(object sender, EventArgs e) {
listBox1.AllowDrop = true; listBox1.DragOver += new DragEventHandler(listboxOnDragOver); listBox1.DragDrop += new DragEventHandler(listboxOnDragDrop);
} void listboxOnDragOver(object obj, DragEventArgs dea) { if (dea.Data.GetDataPresent(DataFormats.FileDrop)) dea.Effect = DragDropEffects.Move; } void listboxOnDragDrop(object obj, DragEventArgs dea) { if (dea.Data.GetDataPresent(DataFormats.FileDrop)) { string[] dateien = (string[])dea.Data.GetData(DataFormats.FileDrop); listBox1.Items.AddRange(dateien);
} } |
Wichtig ist das dabei die extenison (.mp3 , .bmp,.avi) erhalten bleibt ...
Danke schonmal
schönen tag noch scarecraft !
JüTho - Fr 18.04.08 19:55
Hallo,
ich finde bei Deinem Thema keine Frage. Wo liegt denn das Problem?
Du brauchst nur Dein String-Array dateien nicht per AddRange, sondern per Add() einzeln zu übertragen; dabei lässt Du jeden String über Path.GetFile() laufen. Denn diese Methode benutzt einen String als Dateinamen, aber nicht eine wirklich vorhandene Datei.
Jürgen
Scarecraft - Mo 21.04.08 16:10
JüTho hat folgendes geschrieben: |
Hallo,
ich finde bei Deinem Thema keine Frage. Wo liegt denn das Problem?
Jürgen |
Ja also : wenn ich das so mache wie oben dann steht da :
C#-Quelltext
1:
| " C:\Programme\Musik\benutzer\Scarecraft\Mp3\Rock\Linkinpark\numb.mp3" |
in der Listbox
Aber ich möchte gerne das da :
Steht ;)
Danke schonmal
Christian S. - Mo 21.04.08 16:21
Aber was hindert Dich, das so zu machen wie Du's oben beim OpenDialog gezeigt hast? :gruebel:
JüTho - Mo 21.04.08 17:23
Wie ich es doch schon vorher geschrieben hatte:
JüTho hat folgendes geschrieben: |
Du brauchst nur Dein String-Array dateien nicht per AddRange, sondern per Add() einzeln zu übertragen; dabei lässt Du jeden String über Path.GetFile() laufen. |
Es ist doch hoffentlich nicht nötig, dass wir die Schleife mit Deinem allerersten Code schreiben; das solltest Du doch selbst können.
Jürgen
Scarecraft - Di 22.04.08 16:45
Ja ich weis nun wie ihr das meint ,
aber mit der syntax hab ich noch probleme hab das nu so gemacht :
C#-Quelltext
1: 2: 3: 4: 5: 6:
| string [] dateien = (string[])dea.Data.GetData(DataFormats.FileDrop);
for (int i = 0; i < dateien.Length; i++) { listBox1.Items.Add(System.IO.Path.GetFileName(dateien)); ; } |
Also die schleife dürfte tun ,aber der schleifen inhalt ist noch nicht ganz korreckt er sagt mir dabei :
C#-Quelltext
1:
| The best overloaded method match for 'System.IO.Path.GetFileName(string)' has some invalid arguments |
mh .. ich bin wohl einfach zu blöde :P
Christian S. - Di 22.04.08 17:00
dateien ist ein Array, welches Du mit einer Schleife durchläufts. Du willst die einzelnen Elemente des Arrays an die Methode übergeben, im Moment übergibst Du das komplette Array.
JüTho - Di 22.04.08 18:16
Ich hoffe, dass ich Dich mit meinem Hinweis nicht zusätzlich verwirre. Unter C# (und anderen neueren Programmiersprachen) gibt es die
foreach-Schleife:
C#-Quelltext
1: 2: 3: 4:
| string[] stringArray = ...foreach(string s in stringArray) { } |
Das vereinfacht sehr oft das Schreiben von Schleifen. Die Reihenfolge entspricht meistens dem indizierten Zugriff (aber nicht immer); wenn es nicht auf die Reihenfolge ankommt, ist foreach meistens vorzuziehen.
Jürgen
Scarecraft - Di 22.04.08 19:24
ah habs geschafft , bin ja dochnet so blöde ^^
C#-Quelltext
1: 2: 3: 4: 5: 6: 7:
| string[] dateien = (string[])dea.Data.GetData(DataFormats.FileDrop);
foreach (string s in dateien) { listBox1.Items.Add(System.IO.Path.GetFileName(s));
} |
Dankeschön an alle :) and :
Have a nice day!!!
Mfg Scarecraft
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!