2016-07-01 2 views
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():

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

каждый раз вызывается метод ReadLine, он переходит к следующей строке, так что цель вашего цикла ушла.

ли что-то вроде этого,

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

Вы можете использовать

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

, чтобы сделать это в одной строке.

Смежные вопросы