2017-02-04 25 views
2

Проект приложения Windows Form, над которым я работаю, требует, чтобы я заполнил 4 текстовых поля со значениями в текстовом файле. В текстовом файле каждая строка содержит слово для каждого текстового поля, разделенное пробелом. (Например, первая строка может сказать «кошачья собака-кошка», а вторая строка может сказать «a b c d»)Как отправить текстовую строку в текстовое поле с помощью списка?

В списке содержится первое слово каждой строки. (Запуск с тем же примером, поле списка будет содержать «cat» и «a».)

Таким образом, я дважды щелкнул по значению в списке и запустил поиск в текстовом файле с помощью средства чтения потоков, выберите строка, которая содержит выбранный элемент, поместить его в строковый массив, разбить на 4 элемента на основе интервала и поместить их в 4 соответствующих текстовых поля.

Это еще не работает, хотя любые предложения?

 private void listBox1_MouseDoubleClick(object sender, MouseEventArgs e)//list double click 
    { 
     AccountBox.Clear(); 
     EmailBox.Clear(); 
     UserBox.Clear(); 
     PassBox.Clear(); //to reset boxes 

     string accountName = listBox1.GetItemText(listBox1.SelectedItem); 
     AccountBox.Text = accountName; 

     System.IO.StreamReader account = new System.IO.StreamReader("record.txt"); 

     var lineCount = File.ReadLines("record.txt").Count(); 
     int lines = Convert.ToInt32(lineCount); 
     for (int i = 0; i < lines; i++) 

     { 
     if (account.ReadLine().Contains(AccountBox.Text)) 
      { 
       string[] words; 

       words = account.ReadLine().Split(' '); 

       AccountBox.Text = words[0]; 
       EmailBox.Text = words[1]; 
       UserBox.Text = words[2]; 
       PassBox.Text = words[3]; 
      } 
      else 
      { 
       break; 
      } 
     } 

ответ

1

Как вы используете файл как бухгалтерского учета, так я предполагаю, что там не должно быть много записей в ней, поэтому вы можете легко прочитать все записи сразу и сравнить их в памяти, которая будет намного проще и быстрее:

string accountName = listBox1.GetItemText(listBox1.SelectedItem); 
AccountBox.Text = accountName; 
string[] lines = File.ReadAllLines("record.txt"); 
string account = lines.Where(l=>l.Split(' ')[0]==accountName).FirstOrDefault(); 

if(account!=null) 
{ 
    string[] words = account.Split(' '); 
    AccountBox.Text = words[0]; 
    EmailBox.Text = words[1]; 
    UserBox.Text = words[2]; 
    PassBox.Text = words[3]; 
} 
+0

Если кому-то это нужно, не забудьте создать строковый массив, называемый словами в начале цикла if. В противном случае он работал как шарм. Большое спасибо! – Manny

+0

Добро пожаловать. Кстати, я отредактировал и исправил ответ. –

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

  • Нет связанных вопросов^_^