Autor Beitrag
interessierter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 75



BeitragVerfasst: Mi 07.11.12 16:22 
Hallo Zusammen

Ich bastle einen kleinen Trainings Manager, dazu eine Frage. Mittels eines Klicks auf den Button "alle Profile", werden in einer Listbox alle gespeicherten Benutzerprofile angezeigt. Nun will ich mittels eines Klicks auf einen weiteren Button "Laden" den angewählten Dateipfad aus der Listbox laden und den Inhalt ausgeben.

Wie kann ich den angewählten Pfad (angewählte Datei) in einen string umwandeln um dann den Pdad mittels StreamReader normal auslesen zu können? Oder gibt es einen anderen Weg? Hier mal der Code:

ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;

namespace Training_Manager
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        
        private void button1_Click(object sender, EventArgs e)
        {
            Form2 neuesProfil = new Form2();
            neuesProfil.Show();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            if (Directory.Exists(@"C:\Users\x\Desktop\Training Manager"))
                Directory.SetCurrentDirectory(@"C:\Users\x\Desktop\Training Manager");
        }
        
        private void button2_Click(object sender, EventArgs e)//Alle Profile anzeigen
        {
            string verzeichnis;
            string[] dateiliste;
            int i;

            verzeichnis = Directory.GetCurrentDirectory();
            dateiliste = Directory.GetFiles(verzeichnis);
            listBox1.Items.Clear();

            for (i = 0; i < dateiliste.Length; i++)
                listBox1.Items.Add(dateiliste[i]);
        }

        private void button3_Click(object sender, EventArgs e)//Profil laden
        {

        }
    }
}


Grüsse
interessierter
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4798
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Mi 07.11.12 16:42 
Hallo,

wo ist das Problem? s. ListBox.SelectedItem
interessierter Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 75



BeitragVerfasst: Mi 07.11.12 17:22 
Jetzt hats geklappt. Habe das "toString vergessen" bei meinen zahlreichen Versuchen.

Vielen Dank.

Gruss
Dani
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Mi 07.11.12 17:34 
ToString mag hier eher zufällig das Richtige liefern aber ToString ist meist falsch da die meisten Klassen bei ToString Debug Informationen liefern nicht den Inhalt. Und wer ToString so überschreibt das es den Inhalt zurück liefert hat entweder den Sinn von ToString oder DataBinding nicht verstanden.

Hier ist der Inhalt der Listbox bereits ein string. ToString an einem String aufzurufen ist blöd du solltest einfach auf einen string casten.
interessierter Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 75



BeitragVerfasst: Mi 07.11.12 20:05 
Was heisst genau auf einen string casten? Hat das etwas mit Konvertieren zu tun?
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Mi 07.11.12 22:15 
Nein. Casten bedeutet soviel wie Typumwandlung. Das ist üblicherweise kein konvertieren sondern einfach nur das ändern des Typs einer Referenz auf eine Klasse/Instanz.

ausblenden C#-Quelltext
1:
2:
object obj = "Hallo Welt"// wir haben nur eine object Variable, wissen aber das es eigentlich ein string ist
string str = (string)obj; // <- hier wird object auf string gecastet


SelectedItem einer Listbox ist erstmal nur als object definiert da man ja alles in einer Listbox darstellen kann nicht nur strings. Hier weist du aber das da strings drin stecken. Also einfach SelectedItem auf string casten.
jochenc
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Sa 05.01.13 17:05 
Hallo Ralf, ich wußte das auch nicht so genau, ist interessant für mich zu lesen gewesen und hilft mir echt weiter. Vielen Dank dafür, werds gleich umsetzen. Servus bis bald.