Entwickler-Ecke

WinForms - Dateiname durch openFileDialog1 in textbox1 anzeigen lassen


AlanWake - Fr 10.09.10 09:53
Titel: Dateiname durch openFileDialog1 in textbox1 anzeigen lassen
Hallo Leute,

ich versuche schon seit längerer Zeit, mir einen Dateinamen in einer Textbox anzeigen zu lassen, die ich voher durch einen openFileDialog1 auswählen konnte.

Das ist was ich bis jetzt habe:


C#-Quelltext
1:
2:
3:
4:
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                textBox1.Text = openFileDialog1.FileName;
            }


Bei dem Code wird leider der komplette Pfad + Dateiendung angezeigt :(

Bei Google konnte ich keine Lösung für mein Problem finden :cry:

Gibt es eine Möglichkeit, nur den Dateinamen anzeigen zu lassen ohne Pfad und Endung :?:

gruß Alan


12profi - Fr 10.09.10 09:59

Hmm der Code scheint richtig zu sein was hast du denn als Filname eingestellt ?


bakachan - Fr 10.09.10 10:02

Schneid dir doch einfach den String zurecht oder benutz die FileInfo Klasse (System.IO Namespace), da gibts dann direkt Properties für Name, Fullname, Extension usw.


AlanWake - Fr 10.09.10 10:02

@12profi Ich öffne den openFileDialog1 und wähle eine Datei aus.

@bakachan Kannst du mir ein Code Beispiel geben :?:

gruß Alan


Greenberet - Fr 10.09.10 10:03

Du bekommst den kompletten Pfad mit, weil du normalerweise mit der Datei etwas machen willst( öffnen z.B ) und dafür brauchst du halt den Pfad.

Wenn du wirklich nur den Namen ohne Änderung haben willst würde ich mit Suche im MSDN STRING.LASTINDEXOF und Suche im MSDN STRING.SUBSTRING arbeiten, oder der einfachere Weg -> Suche im MSDN FILEINFO


AlanWake - Fr 10.09.10 10:20

Habe so etwas voher noch nie gemacht, kann mir jemand ein Code Beispiel geben :?:

gruß Alan


Yogu - Fr 10.09.10 10:37

Du hast gerade jede Menge an Codebeispielen bekommen, klick doch einfach mal die Links an und schau, was die MSDN dazu schreibt :roll:

Edit: Die Klasse FileInfo ist vielleicht ein bisschen zu komplex dafür, einfacher ist es mit der Suche im MSDN SYSTEM.IO.PATH-Klasse.


Necaremus - Fr 10.09.10 12:22

kleiner tipp, der zumindest mir immer hilft:
wenn du eine klasse nicht kennst erstell dir einfach kurz eine instanz und guck dir alles mögliche von dem ding an ;)

C#-Quelltext
1:
2:
FileInfo f = new FileInfo("");
f.
und das dropdownmenü durchstöbern ;)


AlanWake - Fr 10.09.10 12:43

Vielen dank Necaremus, hat super funktioniert, danke das du dir die Mühe gemacht hast und ein Code Beispiel gepostet hast, bei den Links habe ich nur Bahnhof verstanden :)


Code:


C#-Quelltext
1:
2:
3:
4:
5:
            if(openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                FileInfo f = new FileInfo(openFileDialog1.FileName);
                textBox1.Text = f.Name;
            }


gruß Alan

ps. Das durchstöbern des Dropdownmenüs brauche ich immer :)


Trashkid2000 - Fr 10.09.10 21:55

Und das Ganze nochmal ohne FileInfo...

C#-Quelltext
1:
2:
3:
4:
5:
OpenFileDialog ofd = new OpenFileDialog();
if (ofd.ShowDialog() == DialogResult.OK)
{
  textBox1.Text = ofd.FileName.Substring(ofd.FileName.LastIndexOf('\\')+1);
}

Gruss, Marko


Yogu - Fr 10.09.10 22:13

user profile iconTrashkid2000 hat folgendes geschrieben Zum zitierten Posting springen:
Und das Ganze nochmal ohne FileInfo...

Naja, der Eigenimplementierung würde ich eine fertige Bibliothek vorziehen, doppelter Code ist nie gut. Die Methode Path.GetFileName [http://msdn.microsoft.com/de-de/library/system.io.path.getfilename.aspx] macht genau das, was du geschrieben hast.


Kha - Fr 10.09.10 22:20

Es soll übrigens Plattformen geben, die keinen Backslash als Verzeichnistrenner benutzen.


Trashkid2000 - Fr 10.09.10 22:31

user profile iconYogu hat folgendes geschrieben Zum zitierten Posting springen:
Die Methode Path.GetFileName [http://msdn.microsoft.com/de-de/library/system.io.path.getfilename.aspx] macht genau das, was du geschrieben hast.

Du hast ja Recht, habe das auch nur geschrieben, weil oben SubString und LastIndexOf genannt wurden. Aber ansonsten ist es schon gut, dass es für sowas vorgefertigte Methoden oder auch Eigenschaften gibt.

user profile iconKha hat folgendes geschrieben Zum zitierten Posting springen:
Es soll übrigens Plattformen geben, die keinen Backslash als Verzeichnistrenner benutzen.

Ist mir bekannt, z.B. Linux mit '/'. Aber auf den Plattformen läuft ja auch nicht .NET-Code, oder :wink:
Lasse mich gerne etwas anderes belehren.

Marko


Kha - Fr 10.09.10 23:30

user profile iconTrashkid2000 hat folgendes geschrieben Zum zitierten Posting springen:
Lasse mich gerne etwas anderes belehren.
O [http://en.wikipedia.org/wiki/Silverlight#Compatibility]k [http://en.wikipedia.org/wiki/Mono_%28software%29] ;) .