2016-07-01 7 views
1

テキストファイルからコンボボックスに項目を追加して割り当てを行うコードです。私が今やっているように、テキストファイルのすべてのアイテムを1つずつではなくすべて追加するにはどうすればいいですか?すべての行を一度に追加する方法

private void Form1_Load(object sender, EventArgs e) 
{ 
    TextReader tr; 

    try 
    { 
     cboCity.Items.Clear(); 
     tr = File.OpenText("C:\\Users\\Alexander\\Desktop\\CPI Institute\\CPR\\Debugging\\cities.txt"); 

     for (int counter = 4; counter < 5; counter++) 
     { 
      cboCity.Items.Add(tr.ReadLine()); 
      cboCity.Items.Add(tr.ReadLine()); 
      cboCity.Items.Add(tr.ReadLine()); 
      cboCity.Items.Add(tr.ReadLine()); 

      tr.Close(); 
     } 
    } 
    catch (Exception ex) 
    { 
     MessageBox.Show("Error opening cities file", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error); 
    } 
} 
+0

Items.AddRangeを使用できますが、その前にファイルの読み込みを完了する必要があります。 –

+0

"cities.txt"の形式は何ですか? –

+0

'for'ループは一度だけ実行されます。あなたは安全にそれを削除できます。あるいは、 'int counter = 0'をセットし、' ReadLine() 'への複数の呼び出しを取り除き、' Close() 'をループの外側に持って行きます。 – Thaoden

答えて

0

使用Items.AddRange():あなたはReadLineメソッドを呼び出す

cboCity.Items.AddRange(new string[] { tr.ReadLine(), tr.ReadLine(), tr.ReadLine(), tr.ReadLine() }); 
1

毎回あなたのループの目的がなくなっているので、それは、次の行に進みます。

このような何かを、

string line; 
StreamReader file = new System.IO.StreamReader("C:\\Users\\Alexander\\Desktop\\CPI Institute\\CPR\\Debugging\\cities.txt"); 

while((line = file.ReadLine()) != null) 
{ 
    cboCity.Items.Add(line); 
} 

file.Close(); 
3

あなたは1行でそれを行うために

cboCity.Items.AddRange(File.ReadAllLines("C:\\Users\\Alexander\\Desktop\\CPI Institute\\CPR\\Debugging\\cities.txt")); 

を使用することができます。

関連する問題