c#从文本框中读取搜索结果并显示在列表框中

本文关键字:显示 列表 读取 文本 搜索结果 | 更新日期: 2023-09-27 18:13:25

我在做一个学校的项目"一个简单的地址簿。用户在文本框中输入姓名、地址、邮政号码、城市、电话和电子邮件。然后单击添加按钮并保存到文本文件中,并在列表框中显示新联系人。

现在我可以按名字或城市搜索。我希望用户能够搜索姓名和城市。我该怎么做呢?这是我的代码。

    private void buttonSearch_Click(object sender, EventArgs e)
    {
        string searchTerm = textBoxSearch.Text.ToLower();

        List<Person> searchResult = People.FindAll(p => p.Name.ToLower().Contains(searchTerm)
        || p.Postort.ToLower().Contains(searchTerm));

        listBoxPeople.Items.Clear();

        foreach (Person person in searchResult)
        {
            listBoxPeople.Items.Add(person.ToListBoxString());
        }
        if(searchResult.Count==0)
        {
            MessageBox.Show("Not found info! try again!");
        }
    }         

c#从文本框中读取搜索结果并显示在列表框中

假设你的搜索词只有一个输入框:

// Get an array of search terms... search for as many as you like
string[] searchTerm = textBoxSearch.Text.ToLower().Split(' ');
List<Person> searchResult = new List<Person>();
foreach (string term in searchTerm)
{
    searchResult.AddRange(People.FindAll(p => p.Name.ToLower().Contains(term)
        || p.Postort.ToLower().Contains(term)));
}

我会这样做(准备复制粘贴):

private void buttonSearch_Click(object sender, EventArgs e)
{
        string searchTerm = textBoxSearch.Text.ToLower();
        List<string> searchWords = new List<string>(searchTerm.Split(new char[] { ' ' }));
        List<Person> searchResult = new List<Person>();
        foreach (string word in searchWords)
        {
            searchResult.AddRange(People.FindAll(p => p.Name.ToLower().Contains(word)));
            searchResult.AddRange(People.FindAll(p => p.Postort.ToLower().Contains(word)));
        }
        listBoxPeople.Items.Clear();
        foreach (Person person in searchResult)
        {
            listBoxPeople.Items.Add(person.ToListBoxString());
        }
        if (searchResult.Count == 0)
        {
            MessageBox.Show("Not found info! try again!");
        }
}