2014-09-27 69 views
-1

我想逐行讀取文本文件。但是,我想要做的是每次點擊按鈕它讀取下一行並將其插入到文本框中。所以直到按鈕被點擊,它不會將下一行插入到文本框中。如何在c中單擊一個按鈕來逐行讀取文本文件#

[代碼]

int lineCount = File.ReadAllLines(@"C:\test.txt").Length; 
    int count = 0; 


    private void button1_Click(object sender, EventArgs e) 
    { 
     var reader = File.OpenText(@"C:\test.txt"); 


     if (lineCount > count) 
     { 
      textBox1.Text = reader.ReadLine(); 
      count++; 
     } 
    } 

//當我按一下按鈕一次而已,此代碼發生。

+0

那是因爲你正在閱讀每次點擊整個文件,你也試圖從Windows應用程序控制臺讀取。它不會暫停Windows應用程序。 – paqogomez 2014-09-27 18:02:29

+0

雖然我在寫文本框 – 2014-09-27 18:04:19

+1

您是否嘗試使用調試程序逐句通過您的代碼?它會清楚地告訴你,你的行計數器被重置,並且你每次都讀取整個文件。 – Filburt 2014-09-27 18:04:45

回答

2

應定義的StreamReader作爲類的字段:

System.IO.StreamReader file = null; 
private void button1_Click(object sender, EventArgs e) 
{ 
    string line; 

    if (file == null) 
     file = new System.IO.StreamReader("c:\\test.txt"); 
    if (!file.EndOfStream) 
    { 
     string line = file.ReadLine(); 
     textBox1.Text = line; 
    } 
    else 
    { 
     MessageBox.Show("End"); 
     file.Close(); 
    } 
} 
+0

全球?在c#中沒有全局變量。看起來你的意思是把它定義爲一個字段。另外,爲什麼將它設置爲空?只需繼續並在字段初始化器中進行初始化即可。你也可以刪除那些「counter」和「line」變量。 – 2014-09-27 18:18:49

+0

是的:D是的:D是的:D你們所說的都是真的,我這樣回答,所以事實上,對不起。 @GeorgeMauer我編輯這個 – 2014-09-27 18:37:22