none
Dateipfad aus ListView Item ermitteln RRS feed

  • Frage

  • Hallo,

    ich möchte von einer Datei aus einem ListView Item den Dateipfad ermitteln´und in eine Textbox packen. Ich bekomme die Fehlermeldung, "Der Pfad hat ein ungültiges Format."

    Ich gebe nur den Dateinamen an und daraus kann  der Pfad nicht ermittelt werden.

    Für einen Tipp wäre ich dankbar.

    private void listView1_MouseDoubleClick(object sender, MouseEventArgs e)
            {
    
                ListViewItem item = listView1.GetItemAt(e.X, e.Y);
                String name = Convert.ToString(item.Name);   
                    
                if (item != null)
                {
                    String pfad = Path.GetFullPath(name);  //Fehlermeldung "Der Pfad hat ein ungültiges Format."
                    textBox1.Text = pfad;
    
                }
    
            }

    Mittwoch, 10. Februar 2016 18:33

Antworten

Alle Antworten

  • Hallo Peter,

    wie soll auch aus einem Dateinamen ein Pfad ermittelt werden können? Wenn du nur einen Dateinamen übergibst, wird davon ausgegangen dass diese im Arbeitsverzeichnis der Anwendung liegt. Du wirst also immer den Pfad des Arbeitsverzeichnisses (meistens das wo die Anwendung liegt) + Dateinamen zurück bekommen.

    Bei der Fehlermeldung die du erhältst wird in name vermutlich etwas falsches drin stehen. Wenn ich raten müsste einfach nur "ListViewItem" oder so, da du ja auch nicht den Inhalt des Items (Text-Eigenschaft) abrufst sondern einfach nur ToString aufrufst. Sicherheit bringt da aber nur das Setzen eines Breakpoints und ein Überprüfen der Variablen.


    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 markiert Peter_68_ Donnerstag, 11. Februar 2016 18:16
    Mittwoch, 10. Februar 2016 18:54
    Moderator
  • Hallo,

    ich würde das etwas umstellen und dann ggf. prüfen, was "name" enthält (Debugger).

    private void listView1_MouseDoubleClick(object sender, MouseEventArgs e) {
      ListViewItem item = listView1.GetItemAt(e.X, e.Y);
      if (item != null) {
        String name = Convert.ToString(item.Name);   
        if (name != "") {
          String pfad = Path.GetFullPath(name);  //Fehlermeldung "Der Pfad hat ein ungültiges Format."
          textBox1.Text = pfad;
        }
      }
    }

    Gruß

    Mittwoch, 10. Februar 2016 19:01
  • @Tom

    Du hast Recht, ich verwende jetzt die Text Eigenschaft und mein Pad wird angezeigt. Aber, wir Du schon geschrieben hast,  nur das Arbeitsverzeichis. (C:\Users\Peter\Documents\Visual Studio 2013\Projects...usw).

    Liegt die Datei auf einem anderen Laufwerk, wird trotzdem C\....... angezeigt.

    Habe das Problem gelöst, indem ich das sender Objekt des Events für die erste Listbox in einer globalen Variable  gespeichert habe. Diesen Wert konnte ich dann im meinem ListView Event verwenden.

    Danke für Eure Hilfe.

    private void listBox1_SelectedValueChanged(object sender, EventArgs e)
            {
                ListBox lb = (ListBox)sender;
                this.laufwerk = lb.Text;
    }
    
    
    
     
    
    private void listView1_MouseDoubleClick(object sender, MouseEventArgs e)
            {
                ListViewItem item = listView1.GetItemAt(e.X, e.Y);
                if (item != null)
                {
                    String name = Convert.ToString(item.Text);
                    if (name != "")
                    {
                        String pfad = Path.GetFullPath(this.laufwerk+name);  
                        textBox1.Text = pfad;
                    }
                }
    
              
            }




    • Bearbeitet Peter_68_ Donnerstag, 11. Februar 2016 18:17
    Mittwoch, 10. Februar 2016 19:28