2013-03-20 4 views
-1

В настоящее время я пытаюсь создать небольшую программу, которая хранит ввод пользователем в текстовом поле в файл, но каким-то образом я не смог сохранить вход в файл, это то, что я сделали до сих пор:C# как сохранить userinput в форме окна

Первый класс:

class Name 
{ 
    private string SongName; 
    private string ArtistName; 

    //Constructor 
    public Name(string SongName, string ArtistName) 
    { 
     this.ArtistName = ArtistName; 
     this.SongName = SongName; 
    } 

    //Properties for SongName 
    public string songName 
    { 
     get { return SongName; } 
     set { SongName = value; } 
    } 

    //Properties for ArtistName 
    public string artistName 
    { 
     get { return ArtistName; } 
     set { ArtistName = value; } 
    } 
} 

А вот код Form1:

public Form1() 
    { 
     InitializeComponent(); 
    } 

    private string SongName, ArtistName; 

    public void Registry() 
    { 
     List<Name> MusicList = new List<Name>(); 
     MusicList.Add(new Name(SongName = txtSongName.Text , ArtistName = txtArtistName.Text)); //Add new elements to the NameClass 

     //Save the list 
     StreamWriter FileSaving = new StreamWriter("MusicList"); 
     for (int i = 0; i < MusicList.Count; i++) 
     { 
      string sName = MusicList[i].songName; 
      string aName = MusicList[i].artistName; 
     } 
     FileSaving.Close(); 
    } 

    private void btnEnter_Click(object sender, EventArgs e) 
    { 
     Registry(); 
     //Set the textbox to emty so the user can enter new data 
     txtArtistName.Text = ""; 
     txtSongName.Text = ""; 
    } 
+1

ваш ничего не делает с потоковедателем, просто открывающим его 'filesaving.writeline' – Sayse

+1

ваш код делает' NOTHING' также то, что происходит с этой строкой string sName = MusicList [i] .songName ; string aName = MusicList [i] .artistName; вы ничего не пишете в файле, я бы также прочитал, как использовать свойства. – MethodMan

+0

Довольно простая проблема здесь, если вы просто посмотрите на свой код и подумайте о том, чего не хватает. Удачи – JeremyK

ответ

2

В вашем цикле вам нужно на самом деле записать значение потока.

for (int i = 0; i < MusicList.Count i++) 
{ 
    string sName = MusicList[i].songName; 
    string aName = MusicList[i].artistName; 
    FileSaving.WriteLine(sName + ' ' + aName); 
} 
2

.... Вы никогда ничего не записывать в файл .....

A quick Google got me this

Обратите внимание на вызов file.WriteLine(line); также ... Вы понимаете, что вы не создаете файл с расширением, а также?

+0

Не будь таким суровым на него, он явно начинающий :) – JeremyK

+1

@JeremyK Надеюсь, вы шутите? Будучи новичком, вы не знаете, как Google. –

+1

Нет ничего плохого в том, что вы указываете это. Просто говорю, что вы довольно суровы по вашему тону, и я не удивлюсь, если этот человек очень-очень новый для программирования или даже молодой. Просто не нужно засыпать.key :) – JeremyK

1

Здесь вы создаете StreamWriter, но никогда не использовать его:

StreamWriter FileSaving = new StreamWriter("MusicList"); 
for (int i = 0; i < MusicList.Count; i++) 
{ 
    string sName = MusicList[i].songName; 
    string aName = MusicList[i].artistName; 
} 
FileSaving.Close(); 

строки aName и SNAME назначены, но никогда не сохраняются.

Смотрите пример здесь с помощью StreamWriter:

http://msdn.microsoft.com/en-us/library/system.io.streamwriter.aspx

1
using (StreamWriter writer = new StreamWriter(filePath)) 
{ 
     for (int i = 0; i < MusicList.Count; i++) 
     { 
      writer.WriteLine(MusicList[i].songName + " , " + MusicList[i].artistName); 
     } 
} 
0

я мое мнение Вы должны использовать XML-сериализации

вот мой сериализации общий класс

public static class Serializer<T> 
{ 
    public static T Deserialize(string path) 
    { 
     System.Xml.Serialization.XmlSerializer serializer = new System.Xml.Serialization.XmlSerializer(typeof(T)); 

     System.IO.FileStream stream = null; 

     try 
     { 
      stream = new System.IO.FileStream(path, System.IO.FileMode.Open, System.IO.FileAccess.Read, System.IO.FileShare.Read); 

      return (T)serializer.Deserialize(stream); 
     } 
     finally 
     { 
      if (stream != null) 
      { 
       stream.Close(); 
       stream.Dispose(); 
      } 
     } 
    } 

    public static void Serialize(string path, T obj, bool createFolder = false) 
    { 
     System.Xml.Serialization.XmlSerializer serializer = new System.Xml.Serialization.XmlSerializer(typeof(T)); 

     if (createFolder) 
     { 
      System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(path)); 
     } 

     using (System.Xml.XmlTextWriter xmlWriter = new System.Xml.XmlTextWriter(path, System.Text.Encoding.Unicode)) 
     { 
      xmlWriter.Formatting = System.Xml.Formatting.Indented; 

      serializer.Serialize(xmlWriter, obj); 

      xmlWriter.Flush(); 
      xmlWriter.Close(); 
     } 
    } 
} 

Затем в Registy Method

public void Registry() 
    { 
     List<Name> MusicList = new List<Name>(); 
     MusicList.Add(new Name(SongName = txtSongName.Text , ArtistName = txtArtistName.Text)); //Add new elements to the NameClass 

     Serializer<List<Name>>.Serialize(@"C:\saved.xml", MusicList); 
    } 

примечание что вы должны добавить конструктор по умолчанию в классе. Имя

Смежные вопросы