2017-05-23 33 views
0

テキストファイルをListViewに読み込む必要があります。私はすでにファイルに保存していますが、誰でもファイルを読み込むための良い答えがあるとは思われません。すべてのデータは最初の列にあり、適切なヘッダーの下には表示されません。それがファイルに保存されたとして、ここではC#読み込み/テキストファイルをListViewに読み込む

は私のテキストファイルのデータである:ここで

05/23/2017 10 : 44 13 : 44 3 $48.00 05/23/2017 09 : 15 15 : 15 6 $96.00

私が使用したコードは次のとおりです。

private void ReadInTimeSheet() 
{ 
     foreach (string line in File.ReadAllLines(@"C:filepath\MyTimeSheet.txt")) 
     { 
      lvTimeSheet.Items.Add(new ListViewItem(line)); 
     } 
} 

そして、ここでは、読み込みの結果: Data displayed in ListView

ファイルを開くときに問題がある場合。すべてのデータは最初の列に含まれており、上のファイルのテキストのビューとまったく同じように見えます。

は何が必要なのは、列3で時間を停止し、2列目に開始時間を1列に表示される日付で、合計時間は4列で働いていた、そしてどのくらいの時間が列で受け取る支払う5.

方法私はこれを達成することはできますか?前もって感謝します。

+0

ステップ1)LINQは、(5)に乗り、モデルに渡す使用して、ステップ2に動作モデル)弦3のLINQのコレクションにあなたのラインを変換)を作成します。 4)モデルが各行を適切なスロット/変数に構文解析できるようにします。 –

+0

あなたはどのようにファイルに書き込みますか?ファイルへの書き込み方法にコードを追加できますか? –

答えて

1

まず、リストビューに列を追加し、ViewDetailsに設定されていることを確認してください。 -2意志の自動サイズそれらに列幅をSETING:あなたはあなたのファイルを読み込むときに

private void Form1_Load(object sender, EventArgs e) 
{ 
    lvTimeSheet.View = View.Details; 
    lvTimeSheet.Columns.Add("Date"); 
    lvTimeSheet.Columns.Add("Start Time"); 
    lvTimeSheet.Columns.Add("Stop Time"); 
    lvTimeSheet.Columns.Add("Total Hours"); 
    lvTimeSheet.Columns.Add("Total Pay"); 

    // Auto-size the columns 
    for (int i = 0; i < lvTimeSheet.Columns.Count; i++) 
    { 
     lvTimeSheet.Columns[i].Width = -2; 
    } 
} 

その後、あなたは5行を読み取る必要がある、と単一ListViewItemとしてそれらの5行を追加します。 ListViewItemは配列で初期化することができるので、一度に5行ずつファイル行をループし、それらの行を含む配列を作成し、その配列によって作成された新しいを追加します。

private void ReadInTimeSheet() 
{ 
    var fileLines = File.ReadAllLines(@"C:\filepath\MyTimeSheet.txt")) 

    for (int i = 0; i + 4 < fileLines.Length; i += 5) 
    { 
     lvTimeSheet.Items.Add(
      new ListViewItem(new[] 
      { 
       fileLines[i], 
       fileLines[i + 1], 
       fileLines[i + 2], 
       fileLines[i + 3], 
       fileLines[i + 4] 
      })); 
    } 

    // Resize the columns 
    for (int i = 0; i < lvTimeSheet.Columns.Count; i++) 
    { 
     lvTimeSheet.Columns[i].Width = -2; 
    } 
} 

出力

enter image description here

+0

それは完全に機能しました。ありがとうございました。 – NMeneses

関連する問題