Benutzer mit den meisten Antworten
path + filename from Listboxitems to string array c#

Frage
Antworten
-
Hi,
in den ListBox Items steht nur das, was Du reingeschrieben hast. Also in deinem Fall der Dateiname. Daraus kannst Du den Pfad ohne weitere Angaben natürlich nicht wiederherstellen.
Du könntest aber auch das FileInfo Objekt an sich als ListBox Item zuweisen. Für die Ausgabe musst Du dann die FileName Eigenschaft verwenden, beim Auslesen hättest Du aber alle Informationen gleich zur Verfügung.
Aber nochmal: Ich halte es für nicht zielführend, ein Control, das eine verfügbare Datenquelle hat, auszulesen anstatt die Datenquelle selbst zu verwenden.
Hier mal ein Beispiel für eine Datenbindung an ein FileInfo Array, evtl. hilft dir das.
namespace UI { public partial class Form1 : Form { public string FilePath { get; set; } = @"X:\Ordner"; public FileInfo[] Files { get; set; } public Form1() { InitializeComponent(); } private void button1_Click( object sender, EventArgs e ) { this.Files = new DirectoryInfo( this.FilePath ).GetFiles( "*.*", SearchOption.AllDirectories ); this.listBox2.ValueMember = "FullPath" ; this.listBox2.DisplayMember = "Name" ; this.listBox2.DataSource = this.Files; } } }
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport
- Bearbeitet Stefan FalzModerator Mittwoch, 4. Mai 2022 11:10
- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Moderator Montag, 9. Mai 2022 07:19
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Moderator Mittwoch, 18. Mai 2022 17:27
Alle Antworten
-
how to create an Array which contains the path/filname of files listed in a Listbox
Hi,
vorab: Da Du dich im deutschsprachigen Bereich der MSDN Foren befindest, poste bitte auch auch Deutsch. Vielen Dank dafür.
Zur Frage an sich: Irgendwie sind die Einträge ja in die Listbox gekommen. Da solltest Du ansetzen und diese Datenquelle für dein Array auslesen.
Des Weiteren wären Informationen wie verwendete Technologie, Projektart, genaues, verwendetes Control, usw. schon notwendig, um helfen zu können.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport -
//das ist das Event was die Listboxen füllt
private void btTeilSuche_Click(object sender, EventArgs e)
{
lbInnenMaterial.Items.Clear();
lbAussenMaterial.Items.Clear();
var part = tbTeil.Text + "*";
var AussenMat = "*" + cbAussenMaterial.SelectedItem + "*";
var DataTyp = "*.dxf";
DirectoryInfo dinfo = new DirectoryInfo(tbPath.Text);
FileInfo[] Files = dinfo.GetFiles(part + AussenMat + DataTyp);
foreach (FileInfo file in Files)
{
lbAussenMaterial.Items.Add(file.Name);
}
var InnenMat = "*" + cbInnenMAT.SelectedItem + "*";
FileInfo[] FilesIn = dinfo.GetFiles(part + InnenMat + DataTyp);
foreach (FileInfo file in FilesIn)
{
lbInnenMaterial.Items.Add(file.Name);
}
} -
Hi,
dann frage ich mich, warum Du die Elemente aus der Listbox und nicht aus dem vorhandenen FileInfo Array auslesen willst? In Files bzw. FileIn steht doch alles, was Du wssen willst!?
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport -
vielleicht wollt ich einfach nur meine Wissenslücke füllen wie man Listbox.Items mit path.combine in ein array packt.
Das kann man dir sicher beantworten, wenn Du uns verrätst, welche Technologie (.NET Core, .NET Classic, ...) und welche Projektart (WinForms, ASP.NET, UWP, WPF, Maui, ...) Du verwendest. Je nach Antwort fällt die Hilfestellung ggfs. anders aus.
Was mir unklar ist, was Du mit Path.Combine willst?
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport -
es ist eine
WinFormsApp .NET 5.0
ich dachte nur das sich pathcombine eignet da die listbox nur Filename enthält der path aber aus einer Textbox kommt und path.combine den Ursprünlichen DirectorySeperatorChar beibehält.
wie gesagt wissenslücke vielleicht würde ja auch GetFullPath mir die Directory wiedergeben bin mir aber bei Listbox Items nicht so sicher.
-
Hi,
in den ListBox Items steht nur das, was Du reingeschrieben hast. Also in deinem Fall der Dateiname. Daraus kannst Du den Pfad ohne weitere Angaben natürlich nicht wiederherstellen.
Du könntest aber auch das FileInfo Objekt an sich als ListBox Item zuweisen. Für die Ausgabe musst Du dann die FileName Eigenschaft verwenden, beim Auslesen hättest Du aber alle Informationen gleich zur Verfügung.
Aber nochmal: Ich halte es für nicht zielführend, ein Control, das eine verfügbare Datenquelle hat, auszulesen anstatt die Datenquelle selbst zu verwenden.
Hier mal ein Beispiel für eine Datenbindung an ein FileInfo Array, evtl. hilft dir das.
namespace UI { public partial class Form1 : Form { public string FilePath { get; set; } = @"X:\Ordner"; public FileInfo[] Files { get; set; } public Form1() { InitializeComponent(); } private void button1_Click( object sender, EventArgs e ) { this.Files = new DirectoryInfo( this.FilePath ).GetFiles( "*.*", SearchOption.AllDirectories ); this.listBox2.ValueMember = "FullPath" ; this.listBox2.DisplayMember = "Name" ; this.listBox2.DataSource = this.Files; } } }
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport
- Bearbeitet Stefan FalzModerator Mittwoch, 4. Mai 2022 11:10
- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Moderator Montag, 9. Mai 2022 07:19
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Moderator Mittwoch, 18. Mai 2022 17:27
-
super dacke das du dir soviel zeit für mich genommen hast war sehr hilfreich
mit dem Control hast du auf jeden fall recht aber ich hab da auch ein anderes project im hinterkopf wo die Listbox aus einer Stücklisten Datenbank gespeist wird und dort fehlt jeder hinweis zu einem Path da wär das hilfreich.