2017-08-17 9 views
0

ファイルの内容を保持するテキストボックスがあります。私はそれが押されると、文字列に基づいて行を削除するボタンを持っています。c#テキストボックスから行を削除し、空白行を削除します

ただし、行が削除されると、テキストボックスの下部に空白行が残ります。この問題は、ファイルが保存されるときの問題です。空行が余分にあるため、再度読み取ることはできません。行が削除された後に保存されたファイルを開こうとすると、このエラーが発生します。「追加情報:索引が配列の境界外にありました」。ファイルを読むと、各行を文字列として取り、 "( '、')"を使ってその行を分割します。

"newText"をとり、新しい行を追加するようにコードを変更する方法はありますか?最後の文字列は追加しませんか?あるいは、何か他の方法で、最後に空白行がないようにします。

おかげ

編集:私はそれが働いてしまった(ありがとうL.B)

更新され、作業コード:

private void deleteModuleButton_Click(object sender, EventArgs e) 
    { 
     String newText = String.Empty; 
     List<String> lines = fileContentTextBox.Text.Split(new String[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries).ToList(); 
     lines.RemoveAll(str => str.Contains(deleteModuleComboBox.Text)); 
     newText = string.Join(Environment.NewLine, lines); 
     fileContentTextBox.Text = newText; 
    } 
+0

'fileContentTextBox.Text = string.Join(Environment.NewLine、lines)'を試しましたか? – Biscuits

答えて

2

は交換してください

newText = string.Join(Environment.NewLine , lines); 

lines.ForEach(str => newText += str + Environment.NewLine); 

+0

ありがとうございました。私も を追加したとき私のために働いた 'newText = string.Join(Environment.NewLine、lines);' の直後 'lines.ForEach(str => newText + = str + Environment.NewLine);' しかし私は感謝:) – Dr4ken

+0

@ Dr4kenこれは、 'string.Join'のコードが* newText * –

+0

に新しい値を代入することによって前のコードを上書きするために機能します。 – Dr4ken

関連する問題