我在listBox中有一个包含国家/地区名称的数组。当我输入textBox时,我想要任何以textBox中的内容开头的国家/地区。
所以,如果我输入:B =>的乙 razil
不是这样的:A => A rgentina,Engl a nd
仅当它以textBox中的内容开头。全文也可以。
arraylist不仅包含名称,而且下面的代码只提取名称。 List2是我想用于搜索的arraylist。
private void textBox7_TextChanged(object sender, EventArgs e)
{
listBox1.ClearSelected();
listBox1.DataSource = null;
foreach (Country name2 in Mytree.List)
{
List2.Add(name2.name);
Console.WriteLine(List2);
}
}
答案 0 :(得分:1)
如果您的目标是避免输入完整的国家/地区名称,则无需重新创建新的用户界面。 TextBox已经可以使用您的代码来完成您尝试重现的所有管道。您所需要的只是数据来源和设置一对属性
// Create the list to use as the custom source.
var source = new AutoCompleteStringCollection();
source.AddRange(new string[]
{
"Argentina",
"England",
"Brazil",
"Italy",
"..."
});
textBox1.AutoCompleteCustomSource = source;
textBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
textBox1.AutoCompleteSource = AutoCompleteSource.CustomSource;
答案 1 :(得分:0)
private void textBox7_TextChanged(object sender, EventArgs e)
{
listBox1.ClearSelected();
listBox1.DataSource = null;
var matchingCountries = Mytree.List.Where(l=>l.name.StartsWith(textBox7.Text));
foreach (Country name2 in matchingCountries)
{
listBox1.Items.Add(name2.name);
}
}
答案 2 :(得分:0)
不太确定,但您需要查看将列表框的数据源设置为
之类的内容listBox1.DataSource = Mytree.List.Where(a=>a.name.StartsWith(textBox7.Text)
使用foreach循环添加每个项目的示例有点多余。