首页 文章

如何使用listbox将文本文件串发送到文本框?

提问于
浏览
2

我正在处理的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;
            }
        }

1 回答

  • 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]; 
    }
    

相关问题