[英]C# read search result from textbox and show in listbox
我正在做一个学校项目“一个简单的通讯录。用户在文本框中输入姓名,地址,邮编,城市,电话和电子邮件。然后单击添加按钮并保存到文本文件中,并在列表框中显示新联系人。”
现在,我可以按名称或城市搜索。 我希望用户能够搜索名称和城市。 我应该怎么做? 这是我的代码。
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!");
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.