3

このコードを使用してファイルからすべての行を読み取りますが、読み取るだけです(またはファイルの最後の行のみを表示します)。メモ帳でファイルを開くと、複数の行があることがわかります。これが私が使用しているコードです:

 using (StreamReader sr = File.OpenText(newPath))
        {
            String input;
            while ((input = sr.ReadLine()) != null)
            {

                TextBox1.Text = input;  

            }
4

6 に答える 6

6

whileループを繰り返すたびに、TextBox1.Textの前の値が読み取った行に置き換えられるため、ループが終了すると、ファイルの最後の行でテキストプロパティが更新されます。

行ごとの読み取りの代わりにFile.ReadAllText()を使用することを検討してください。

TextBox1.Text = File.ReadAllText(newPath);
于 2012-04-22T17:04:17.563 に答える
4

使用する必要があります:

TextBox1.Text += input;

それ以外の場合、説明されている動作は正しいです

最終的に、サンプルを次のように変更できます。

String input;
String target = String.Empty;
try {
using (StreamReader sr = File.OpenText(newPath)) 
{ 
    while ((input = sr.ReadLine()) != null) 
    { 
        target += input;   
    }
}
TextBox1.Text = target;
} catch { ... }

最良の方法は、読み取りプロセスを別のメソッドに抽出することです。

于 2012-04-22T17:00:27.137 に答える
3

TextBox1.Text = input

これにより、前の行が上書きされます。

于 2012-04-22T17:00:25.093 に答える
1

あなたのコードはほぼ正しいですが、次の行:

  TextBox1.Text = input;

TextBox1を「入力」で上書きし、以前に含まれていたものをすべて置き換えます。代わりに、テキストを追加しようとしています。あなたが望んでいるのは:

TextBox1.Text += input + "\n";

これにより、各行がテキストボックスに「追加」され、各行の間に新しい行が挿入され、readLine()を使用して行を取得したときに削除した行が置き換えられます。

于 2012-04-22T17:02:07.233 に答える
0

データの各行を個別に使用する場合は、各行を割り当てるための追加の文字列変数が必要です。これは、反復するファイルのすべての行について、「入力」を上書きし、最後の値を残すためです。ライン。

于 2012-04-22T17:01:36.310 に答える
0

私はいくつかの理由でstringbuilderを好みます。文字列ビルダーを使用する主な利点は、文字列を操作するためのリソースが少なくて済むことです。

StringBuilderの使用法は次のようになります。

 StringBuilder builder = new StringBuilder();
 using (StreamReader sr = File.OpenText(newPath)) {
     while ((input = sr.ReadLine()) != null) {
         builder.AppendLine(input);
     }
 }
 TextBox1.Text = builder.ToString();
于 2012-04-22T17:44:43.703 に答える