Benutzer mit den meisten Antworten
Windows Explorer durchsuchen, mit einer ListBox?

Frage
-
Guten Morgen!
Ich habe ein kleines Übungsprogramm erstellt, wo ich über einen "Öffnen" Button eine beliebige Datei anklicken kann, die dann in einer ListBox zu sehen ist. Jetzt will ich den Öffnen Button loswerden, und neben der ListBox1 (die die Dateien anzeigt) eine zweite ListBox erstellen, die den Explorer wiedergibt. Hoffentlich wisst ihr, was ich meine...?
(Links die Dateien, rechts soll der Explorer wiedergegeben werden)
Die Dateien soll man dann per Drag and Drop, von ListBox2 zu ListBox1 übertragen können.
Wenn ihr irgendwelche Codes braucht, einfach schreiben. Ich will hier nicht alles mit Codes zuballern:D
Danke schon mal für hilfreiche Antworten!
(Das Programm ist eine Windows Form Anwendung )
- Bearbeitet ProgrammBär Sonntag, 23. August 2015 09:13
Antworten
-
Hi,
nö. Ich hab immer noch keinen Schimmer, was Du meinst.
Vor allem deine Aussagen zum Windows Explorer irritieren mehr als das sie mir helfen würden, dein Problem zu verstehen.
Ich probiers aber trotzdem mal:
Links Dateiliste, rechts deine Listbox. So richtig? Falls ja, willst/sollst Du nicht den Windows Explorer integrieren, sondern ein Control, welches dir eine Dateiliste darstellt, mit der Du dann arbeiten kannst.
Ein Beispiel für ein solches Control findest Du hier:
https://code.msdn.microsoft.com/windowsapps/File-System-Tree-View-3a28325c
Dort kannst Du dann auch deinen Drag&Drop Code integrieren, mit dem Du die Dateien aus der Dateiliste in deine Listbox übernehmen kannst.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Mittwoch, 26. August 2015 12:47
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Mittwoch, 2. September 2015 10:15
-
Hallo,
ich verstehe leider nicht wirklich was du vor hast. Wenn du eine eigene Dateiendung einführen willst, die dann mit deinem Programm geöffnet werden kann so ist das kein Problem. Sobald eine Datei mit deinem Programm geöffnet wird, erhältst du den Dateipfad als Befehlszeilenoption. Diese kannst du entweder in der Main-Methode über den args-Parameter abfragen oder aber du benutzt irgendwo anders die Environment.GetCommandLineArgs-Methode.
Ein Drag and Drop lässt sich aber auch leicht implementieren, hierfür musst du nur die AllowDrop-Eigenschaft des gewünschten Ziels auf true stellen und das DragDrop/DragEnter-Event verarbeiten. Das angesprochene Ziel ist das Element auf dem du die Dateien "fallen" lassen kannst.
In den Drag*-Events kannst du zunächst einen grafischen Effekt am Mauszeiger hervorrufen. Das geht über die Effect-Eigenschaft der EventArgs. Über e.Data kommst du an das gezogene Objekt heran.private void Form1_DragEnter(object sender, DragEventArgs e) { if (e.Data.GetDataPresent(DataFormats.FileDrop)) { e.Effect = DragDropEffects.Copy; } else { e.Effect = DragDropEffects.None; } } private void Form1_DragDrop(object sender, DragEventArgs e) { if (e.Data.GetDataPresent(DataFormats.FileDrop)) { var fileName = (string)e.Data.GetData(DataFormats.FileDrop); //verarbeitung des Dateinamens } }
Sonst würde ich den Explorer maximal noch über einen Öffnen-Button/Menüpunkt einbinden - das geht dann über den OpenFileDialog. Weitere Implementierungen bringen meiner Meinung nach nichts.
Tom Lambert - .NET (C#) MVP
Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Mittwoch, 26. August 2015 12:47
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Mittwoch, 2. September 2015 10:15
Alle Antworten
-
Hi,
was soll "der Explorer" sein?
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community -
Hi,
Du willst also links eine Listbox und rechts den richtigen Windows Explorer in dein Programm integrieren?
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community -
-
Hi,
so ganz grundsätzlich würde das gehen. Aber es macht wenig Sinn, den kompletten Windows Explorer in deine Anwendung zu integrieren.
Der Windows Explorer lässt sich zudem nicht als "Listbox" integrieren. Ich mein, Du weißt ja sicher, wie der Windows Explorer aussieht und das ist weitaus mehr als nur eine Listbox. Daher stelle ich mir die Frage, was genau Du da eigentlich wie machen willst? Deine bisherige Beschreibung ist für mich leider nicht aussgekräftig genug dass ich mir das nun wirklich vorstellen könnte.
http://stackoverflow.com/questions/2416963/how-to-create-an-explorer-like-folder-browser-control
...
Aber wie gesagt, ich würde mal genau beschreiben, was Du da eigentlich wirklich machen willst, warum Du davon sprichst, den Windows Explorer in deine Anwendung zu integrieren und vor allem, welche Bestandteile des Windows Explorer Du eigentlich verwenden willst.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community -
Du siehst ja oben den Sceenshot. Ich will auf einer Seite eine ListBox haben und auf der anderen Seite den Explorer wiedergegeben haben. Will man jetzt eine Datei in die ListBox ziehen (per Drag and Drop), kann man einfach die Datei im integrierten Explorer suchen, ohne einen "Öffnen" Button. Weißt du jetzt was ich meine? :D
-
Hi,
nö. Ich hab immer noch keinen Schimmer, was Du meinst.
Vor allem deine Aussagen zum Windows Explorer irritieren mehr als das sie mir helfen würden, dein Problem zu verstehen.
Ich probiers aber trotzdem mal:
Links Dateiliste, rechts deine Listbox. So richtig? Falls ja, willst/sollst Du nicht den Windows Explorer integrieren, sondern ein Control, welches dir eine Dateiliste darstellt, mit der Du dann arbeiten kannst.
Ein Beispiel für ein solches Control findest Du hier:
https://code.msdn.microsoft.com/windowsapps/File-System-Tree-View-3a28325c
Dort kannst Du dann auch deinen Drag&Drop Code integrieren, mit dem Du die Dateien aus der Dateiliste in deine Listbox übernehmen kannst.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Mittwoch, 26. August 2015 12:47
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Mittwoch, 2. September 2015 10:15
-
Hallo,
ich verstehe leider nicht wirklich was du vor hast. Wenn du eine eigene Dateiendung einführen willst, die dann mit deinem Programm geöffnet werden kann so ist das kein Problem. Sobald eine Datei mit deinem Programm geöffnet wird, erhältst du den Dateipfad als Befehlszeilenoption. Diese kannst du entweder in der Main-Methode über den args-Parameter abfragen oder aber du benutzt irgendwo anders die Environment.GetCommandLineArgs-Methode.
Ein Drag and Drop lässt sich aber auch leicht implementieren, hierfür musst du nur die AllowDrop-Eigenschaft des gewünschten Ziels auf true stellen und das DragDrop/DragEnter-Event verarbeiten. Das angesprochene Ziel ist das Element auf dem du die Dateien "fallen" lassen kannst.
In den Drag*-Events kannst du zunächst einen grafischen Effekt am Mauszeiger hervorrufen. Das geht über die Effect-Eigenschaft der EventArgs. Über e.Data kommst du an das gezogene Objekt heran.private void Form1_DragEnter(object sender, DragEventArgs e) { if (e.Data.GetDataPresent(DataFormats.FileDrop)) { e.Effect = DragDropEffects.Copy; } else { e.Effect = DragDropEffects.None; } } private void Form1_DragDrop(object sender, DragEventArgs e) { if (e.Data.GetDataPresent(DataFormats.FileDrop)) { var fileName = (string)e.Data.GetData(DataFormats.FileDrop); //verarbeitung des Dateinamens } }
Sonst würde ich den Explorer maximal noch über einen Öffnen-Button/Menüpunkt einbinden - das geht dann über den OpenFileDialog. Weitere Implementierungen bringen meiner Meinung nach nichts.
Tom Lambert - .NET (C#) MVP
Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Mittwoch, 26. August 2015 12:47
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Mittwoch, 2. September 2015 10:15