none
path + filename from Listboxitems to string array c# RRS feed

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


    Mittwoch, 4. Mai 2022 11:10
    Moderator

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

    Mittwoch, 4. Mai 2022 07:26
    Moderator
  •  

    //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);
                }
            }

    Mittwoch, 4. Mai 2022 09:17
  • 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

    Mittwoch, 4. Mai 2022 09:32
    Moderator
  • Ja du hast recht daran hab ich auch schon gedacht.

    vielleicht wollt ich einfach nur meine Wissenslücke füllen wie man Listbox.Items mit path.combine in ein array packt.


    Mittwoch, 4. Mai 2022 09:47
  • 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

    Mittwoch, 4. Mai 2022 10:09
    Moderator
  • 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.

    Mittwoch, 4. Mai 2022 10:39
  • 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


    Mittwoch, 4. Mai 2022 11:10
    Moderator
  • 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.

    Mittwoch, 4. Mai 2022 11:30