如何使用列表框将文本文件字符串发送到文本框?

如何使用列表框将文本文件字符串发送到文本框?

问题描述:

我正在处理的Windows窗体应用程序项目需要我用文本文件中的值填充4个文本框。 在文本文件中,每行都为每个文本框包含一个由空格分隔的单词。 (例如,第一行可以说“猫鱼狗马”,第二行可以说“a b c d”)如何使用列表框将文本文件字符串发送到文本框?

列表框包含每行的第一个单词。 (运行同样的例子,列表框将包含“cat”和“a”)。

所以我将双击列表框中的一个值,然后使用streamreader在文本文件中运行搜索,选择包含选定项目的行,将其放入一个字符串数组中,根据间距将其分成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; 
      } 
     } 

当你使用文件作为核算,所以我认为不能有它很多的记录,所以,你可以轻松地同时读取所有的记录,并在内存中进行比较,这将是更快,更容易:

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循环的开始处创建一个名为words的字符串数组。否则,它就像一个魅力。非常感谢! – Manny

+0

不客气。顺便说一下,我编辑和纠正了答案。 –