如何使用列表框将文本文件字符串发送到文本框?
问题描述:
我正在处理的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];
}
如果有人需要这个,请记住在if循环的开始处创建一个名为words的字符串数组。否则,它就像一个魅力。非常感谢! – Manny
不客气。顺便说一下,我编辑和纠正了答案。 –