2016-03-15 42 views
1
private void btnClear_Click(object sender, EventArgs e) 
    { 
     txtInput.Text = ""; 
     txtOutput.Text = ""; 

     mainList.Clear(); 
    } 

    private void btnAdd_Click(object sender, EventArgs e) 
    { 
     StreamWriter outputFile; 
     outputFile = File.AppendText("texter.txt"); 
     outputFile.WriteLine(txtInput.Text); 
     outputFile.Close(); 

     List<String> mainList = new List<String>(); 

     StreamReader inputFile; 
     inputFile = File.OpenText("texter.txt"); 
     while (inputFile.EndOfStream == false) 
     { 
      mainList.Add(inputFile.ReadLine()); 
     } 
     inputFile.Close(); 

     for (int i = 0; i < mainList.Count; i++) 
     { 
      txtOutput.Text += Environment.NewLine + mainList[i]; 
     } 


    } 

這幾乎是我的整個程序,特別是這個清單讓我煩惱。當我點擊添加時,它會將列表中的每個條目放入文本框中。關閉表單本身並不會清除列表,我的清除按鈕也不會。即使使用Clear(),我的清單也不會清除,它甚至在關閉表格後仍保留數據

+2

'List 'btnAdd_Click'中的mainList'是一個局部變量。 'btnClear_Click'中的'mainList'可能是一個類數據成員。 – AlexD

+0

啊,這裏沒有顯示,因爲我只包括處理程序,但是我確實將列表聲明爲全局列表,其中列表 mainList = new List (); – gsr

+0

刪除列表 mainList =新列表();在你的btnAdd_Click中,因爲它正在將一個List的新實例作爲一個內部類變量。 btnClear_Click訪問全局mainList變量並清除它,它不會清除你的列表。 – Aizen

回答

0

從評論很明顯,你有一個全局變量mainList定義爲List<String> mainList = new List<String>();然後ADD_BUTTON中單擊要創建另一個表(有當地scope到btnAdd_Click)和添加項目到列表中。這個變量在btnClear_Click中不可用所以實際上這裏發生的是將值添加到一個列表並清除另一個列表。

你可以做的是:

  • btnAdd_Click刪除List<String> mainList = new List<String>();,如果你不希望增加新的項目之前要清除現有的數據。
  • 如果您需要在添加新項目之前清除現有數據,請在btnAdd_Click中使用mainList = new List<String>();而不是List<String> mainList = new List<String>();。那麼你的代碼將按照你的預期工作。
0
  • 您正在清空全局變量,而它是空的。
  • 您將文本添加到本地變量,而不是將其添加到全局變量 變量。
相關問題