Сохранить ListBox_SelectedItem в file.txt - PullRequest
1 голос
/ 27 апреля 2009

Привет всем, Я хочу сохранить в файле .txt хронологию песни, воспроизводимой моим музыкальным проигрывателем. Я попробовал этот фрагмент кода, но он не работает:

    StreamWriter sw = new StreamWriter(@"c:\Media PlayList\List.txt");

   private void listBox1_SelectedIndexChanged(object sender, EventArgs e)

    {
        wmp.URL = Convert.ToString(listBox1.SelectedItem);

foreach (object o in listBox1.SelectedItems) 

         {
               sw.WriteLine(DateTime.Now + " - " + o.ToString());          
         }
    }

Как хранить песни:

private List<string> GetFolder(string Folder)
    {

        string filena;
        DirectoryInfo dir = new DirectoryInfo(Folder);
        FileInfo[] files = dir.GetFiles("*.mp3", SearchOption.AllDirectories);

        List<string> str = new List<string>();

        foreach (FileInfo file in files)
        {
            str.Add(file.FullName);    }
    }


private void Form2_Load(object sender, EventArgs e)
    {

       List<string> uno = GetFolder(@"D:\\Music\\");
        listBox1.DataSource = uno;
        listBox1.DisplayMember = "uno"; }

Мне нужно каждый раз, когда музыкальный проигрыватель меняет песню, файл «List.txt» будет обновляться списком listbox. Где я не прав? Спасибо за ваше внимание.

С наилучшими пожеланиями

РЕДАКТИРОВАТЬ: я обновил мой фрагмент кода, надеясь, что он будет понятен.

Ответы [ 3 ]

1 голос
/ 27 апреля 2009

private void listBox1_SelectedIndexChanged (отправитель объекта, EventArgs e)

{
    wmp.URL = Convert.ToString(listBox1.SelectedItem);

    foreach (object o in listBox1.SelectedItems) 
           sw.WriteLine(DateTime.Now + " - " + o.ToString());          
   sw.close();
}
1 голос
/ 27 апреля 2009
using System;
using System.Collections.Generic;
using System.IO;
using System.Windows.Forms;

namespace WindowsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            listBox1.DataSource = GetFolder("D:\\Music\\");
        }

        private static List<string> GetFolder(string folder)
        {
            List<string> FileList = new List<string>();
            foreach (FileInfo file in new DirectoryInfo(folder).GetFiles("*.mp3", SearchOption.AllDirectories))
                FileList.Add(file.FullName);
            return FileList;
        }

        private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            StreamWriter sw = new StreamWriter("c:\\Media PlayList\\List.txt", true);
            wmp.URL = Convert.ToString(listBox1.SelectedItem);
            foreach (object o in listBox1.SelectedItems)
                sw.WriteLine(DateTime.Now + " - " + o);
            sw.Close();
        }
    }
}

Приведенный выше код сделает всю работу за вас. Примечания:

  • Если вы хотите добавить файл, вы должны передать true в качестве второго аргумента при создании StreamWriter.
  • После записи ваших данных в файл вы должны явно закрыть StreamWriter, иначе ваш файл будет пустым.
  • После закрытия файла вы больше не можете писать в него. Если хочешь, можешь снова открыть.
1 голос
/ 27 апреля 2009

Если не удается обновить файл, вы можете установить параметр добавления в конструкторе, например:

StreamWriter sw = new StreamWriter(@"c:\Media PlayList\List.txt", true);

Если не удается вызвать событие SelectedIndexChanged, обновите вопрос, чтобы отразить это ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...