2017-02-18 10 views
0

私はC#の初心者です。テキストボックスから読み込んでいる内容を複製しているこのリストボックスは私のプログラムにあります。 プログラムを起動するたびに、save.txtファイルの内容がリストボックスにロードされますが、それを実行すると、すべてのsave.txtコンテンツの複製がロードされます。内容をロードする前にリストボックスをクリアしようとしましたが、うまくいきません。私のプログラムは、入力ストリームをテキストボックスから複製しています。C#

は、ここに私のコードです:

private void readList() 
    { 
     string line; 
     listBox.Items.Clear(); //I tried to clear the listbox but it's not working 
     listBox.Items.AddRange(File.ReadAllLines(@"C:\Users\Paul.DESKTOP-HGGDG1D\Desktop\My C# apps\MyAgenda\MyAgenda\MyAgenda\bin\Debug\save.txt")); 
     using (StreamReader sr = new StreamReader("save.txt")) 
      while ((line = sr.ReadLine()) != null) 
      { 
       listBox.Items.Add(line); 
      } 
    } 

    public myAgenda() 
    { 
     InitializeComponent(); 
     readList(); 
    } 

    private void add_btn_Click(object sender, EventArgs e) 
    { 

     if (string.IsNullOrWhiteSpace(add_txt.Text)) 
     { 
      MessageBox.Show("Error: Please enter a value"); 
     } 
     else 
     { 
      holder = add_txt.Text; 
      listBox.Items.Add(ctr + " " + holder); 
      ctr++; 
      add_txt.Text = " "; 
     } 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     const string sPath = "save.txt"; 
     System.IO.StreamWriter SaveFile = new System.IO.StreamWriter(sPath); 
     foreach (var item in listBox.Items) 
     { 
      SaveFile.WriteLine(item); 
     } 
     SaveFile.Close(); 
     Application.Exit(); 
    } 
+0

は、それが再びストリーム全体を複製するか、単に人口なっているsave.txtのエントリが重複しているのですか? –

答えて

2

あなたはreadlist方法、すなわち

初回にlistbox 2時間を埋めている。

listBox.Items.AddRange(File.ReadAllLines(@"C:\Users\Paul.DESKTOP-HGGDG1D\Desktop\My C# apps\MyAgenda\MyAgenda\MyAgenda\bin\Debug\save.txt")); 

2回目:

 using (StreamReader sr = new StreamReader("save.txt")) 
     while ((line = sr.ReadLine()) != null) 
     { 
      listBox.Items.Add(line); 
     } 

1つの方法を削除して、コンテンツをいっぱいにすることができます。読みやすさのためには、最初にアプローチするほうが良いです。

+0

mg!私はそれに気付かなかった:D –

1

listBoxにコンテンツを2回コピーしています。

これを行うにしてみてください。

private void readList() 
{ 
    string line; 
    listBox.Items.Clear(); 

    //Comment out this line then put the File Directory on the StreamReader 
    //listBox.Items.AddRange(File.ReadAllLines(@"C:\Users\Paul.DESKTOP-HGGDG1D\Desktop\My C# apps\MyAgenda\MyAgenda\MyAgenda\bin\Debug\save.txt")); 

    using (StreamReader sr = new StreamReader(@"C:\Users\Paul.DESKTOP-HGGDG1D\Desktop\My C# apps\MyAgenda\MyAgenda\MyAgenda\bin\Debug\save.txt")) 
     while ((line = sr.ReadLine()) != null) 
     { 
      listBox.Items.Add(line); 
     } 
} 
関連する問題