Announcement

Collapse
No announcement yet.

Playlist mit einer Listbox nachbauen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Playlist mit einer Listbox nachbauen

    Hi

    Ich bin gerade dabei mir einen media player zu bauen.

    Nun habe ich aber ein Problem bei der Playlist.
    Diese wollte ich mit einer Listbox bauen.

    Funktioniert auch alles.
    MP3 wird gelesen.
    Die Tags von der MP3 werden gelesen.
    Der Artist etc werden in Labels getan.
    Un der SongTitle wird zusätzlich noch in die Listbox als neues Item geschrieben.

    Doch mein Problem ist, das wenn man einen Title in der Listbox auswählt un ihn abspielen will das Prog ja gar nicht mehr weis welche Datei es ist (wie auch man hat ja nur den Song Title in der listbox gespeichert)

    Mein Problem ist es nun das ich keine Ahnung habe wie ich von dem Listboxeintrag wieder auf die MP3 kommen kann.

    Eine Idee war das man das über mehrdimensionale arrays macht, also zB die erste Dimension steht für den Listbox Eintrag in der 2ten sind Artist etc gespeichert und auch der Pfad zur mp3, doch da man ja beliebig viele Items in die listbox schreiben sollen kann, nützt dies auch nichts.

    2te Idee war den Pfad anstatt den Song title in die Listbox zu schreiben hat auch funktioniert sah aber nicht Toll aus. Und man soll ja den Song Title sehen können.

    Ich hoffe die Informationen reichen um mein Problem genug zu umschreiben.

  • #2
    Servus.

    Niemand hindert dich daran deine eigene MP3 - Klasse zu bauen und diese in die Listbox einzutragen. Diese Klasse kann dann alle Informationen enthalten, die du benötigst (so kannst du natürlich auch noch wesentlich mehr Sachen speichern, als nur den Pfad).
    Beachte dabei, dass das, was .ToString() zurückgibt, in die TextBox eingefügt wird.

    CodeBeispiel:

    [highlight=c#]
    public partial class MainForm : Form
    {
    private ListBox myListbox;

    public MainForm()
    {
    //
    // The InitializeComponent() call is required for Windows Forms designer support.
    //
    InitializeComponent();

    myListbox = new ListBox();
    this.Controls.Add(myListbox);

    myListbox.Items.Add(new SoundFile("Something","Somewhere"));
    myListbox.Items.Add(new SoundFile("Something2","Somewhere2"));
    myListbox.Items.Add(new SoundFile("Something3","Somewhere3"));
    myListbox.SelectedIndexChanged += myListboxOnIndexChanged;
    }

    public void myListboxOnIndexChanged(Object sender, EventArgs e)
    {
    SoundFile File = (SoundFile)myListbox.SelectedItem;

    MessageBox.Show(String.Format("{0} | {1}",File.Name,File.Pfad));
    }
    }

    public class SoundFile
    {
    public SoundFile(String name, String pfad)
    {
    this.Name = name; this.Pfad = pfad;
    }

    public String Pfad;

    public String Name;

    public override string ToString()
    {
    return this.Name;
    }
    }
    [/highlight]

    Mfg Myst

    PS: Entschuldige meinen unsauberen Code und dass er in C# geschrieben ist, aber ich hab gleich Feierabend

    Comment


    • #3
      kein prob ist ja eh fast das selbe und will ich bald auch daran machen c# zu lernen
      werde mich wohl da ein wenig hinein denken müssen

      Trotzdem vielen dank für seine Antwort .

      EDIT:
      So hab mich nun gut 2 std mit dem code beschäftigt aber bekomme ihn leider nicht zum Laufen.
      weis noch jemand eine andere vielleicht einfachere Lösung ?
      Zuletzt editiert von masteR139; 15.06.2009, 18:13.

      Comment


      • #4
        hier nochmal die Vb.net Form des Codes
        [highlight=vbnet]
        # Public Partial Class MainForm
        # Inherits Form
        #
        #
        # Private myListbox As ListBox
        #
        #
        #
        # Public Sub New()
        #
        #
        # '
        #
        # ' The InitializeComponent() call is required for Windows Forms designer support.
        #
        # '
        #
        # InitializeComponent()
        #
        #
        #
        # myListbox = New ListBox()
        #
        # Me.Controls.Add(myListbox)
        #
        #
        #
        # myListbox.Items.Add(New SoundFile("Something", "Somewhere"))
        #
        # myListbox.Items.Add(New SoundFile("Something2", "Somewhere2"))
        #
        # myListbox.Items.Add(New SoundFile("Something3", "Somewhere3"))
        #
        #
        # myListbox.SelectedIndexChanged += myListboxOnIndexChanged
        # End Sub
        #
        #
        #
        # Public Sub myListboxOnIndexChanged(ByVal sender As [Object], ByVal e As EventArgs)
        #
        # Dim File As SoundFile = DirectCast(myListbox.SelectedItem, SoundFile)
        #
        #
        #
        #
        # MessageBox.Show([String].Format("{0} | {1}", File.Name, File.Pfad))
        # End Sub
        #
        # End Class
        #
        #
        #
        # Public Class SoundFile
        #
        #
        # Public Sub New(ByVal name As [String], ByVal pfad As [String])
        #
        #
        # Me.Name = name
        #
        # Me.Pfad = pfad
        # End Sub
        #
        #
        #
        # Public Pfad As [String]
        #
        #
        #
        # Public Name As [String]
        #
        #
        #
        # Public Overloads Overrides Function ToString() As String
        #
        #
        #
        # Return Me.Name
        # End Function
        #
        # End Class
        [/highlight]
        Unsere Jugend ist unerträglich, unverantwortlich und entsetzlich anzusehen! - Aristoteles

        Comment


        • #5
          Hmm kommst du mit dem VB.Net Code zurecht?
          Ansonsten Poste doch mal deine Version des Codes

          MFg Myst

          Comment


          • #6
            hehe converted hatte ich den code auch

            dann wieder zerstückelt verändert nch geklappt alles nomma neu un umegändert

            bis mir dann was viel einfacheres eingefallen ist

            ist zwar ein bisschen doof und eher unschön gelöst

            funktioniert aber prima xD

            Habe mir eine 2te listbox genommen diese unvisible gmacht
            un immer beim öffnen eines files also wenn der title in die listbox1 geladen wird
            wird auch der pfad der mp3 in die listbox2 geladen

            dann habe ich mir noch einen timer gemacht der immer die auswahl beider listboxen gleich macht.



            das wars eig
            mit en bissel denken kann man uch so zurechtkommen
            is zwar nich so sauber und souverän (ka wie man das schreibt )
            gelöst aber funktioniert

            nochmal danke für alle antworten

            Comment


            • #7
              Okay.. das ist jetzt nicht gerade eine "gute" Lösung, aber wenn es dich zufrieden stellt

              Ansonsten würde ich dir empfehlen es noch einmal mit deiner eigenen Klasse zu versuchen.

              Mfg Myst

              Comment


              • #8
                Ich lege dir nahe es mit der eigenen Klasse zu machen! Alles andere ist Pfusch, vor allem mit Timer.
                Was klappt denn an Myst's Lösung nicht? Oder wo kommst nicht weiter?
                Unsere Jugend ist unerträglich, unverantwortlich und entsetzlich anzusehen! - Aristoteles

                Comment

                Working...
                X