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!");
}
}
假设你的搜索词只有一个输入框:
// 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!");
}
}