Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在数组中使用部分搜索并输出结果?_C#_Search_Arraylist_Binary Search Tree_Avl Tree - Fatal编程技术网

C# 如何在数组中使用部分搜索并输出结果?

C# 如何在数组中使用部分搜索并输出结果?,c#,search,arraylist,binary-search-tree,avl-tree,C#,Search,Arraylist,Binary Search Tree,Avl Tree,我在列表框中有一个带有国家名称的数组。当我输入文本框时,我希望显示以文本框中的内容开头的任何国家 所以如果我输入:B=>Brazil 不是这样的:A=>Argentina,EnglAnd 只有以文本框中的内容开头。完整的文字也会起作用 arraylist包含的不仅仅是名称,下面的代码只提取名称。List2是我要用于搜索的arraylist private void textBox7_TextChanged(object sender, EventArgs e) { li

我在列表框中有一个带有国家名称的数组。当我输入文本框时,我希望显示以文本框中的内容开头的任何国家

所以如果我输入:B=>Brazil

不是这样的:A=>Argentina,EnglAnd

只有以文本框中的内容开头。完整的文字也会起作用

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);
        }
    }


不太确定,但您需要考虑将listbox的数据源设置为

listBox1.DataSource = Mytree.List.Where(a=>a.name.StartsWith(textBox7.Text)

您使用foreach循环添加每个项目的示例有点多余。

如果您的目标是避免键入完整的国家名称,则无需重新设计一种新的用户界面。文本框中已经有了所有可用的管道,可以执行您试图用代码复制的操作。您所需要的只是一个数据源和一对属性的设置

// 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;

你想做什么还不清楚。是否要将以文本框中键入的文本开头的所有国家/地区名称添加到列表框中?顺便问一下,您是否只是想帮助您的最终用户选择一个特定的国家,而不必键入其所有名称?你试过使用文本框的自动完成功能吗?这几乎可以工作,例如它会创建重复项。所以巴西这个词在我拼出来的时候创造了6个巴西的实例。这对于第一个字符来说很好。如果我想让它检查单词的每个字符呢?那不是真的,如果你把它放在TextChanged事件上,它会加载combobox,其中包含Mytree中的所有值。列出items“name”属性的起始位置,无论textbox中的值是什么。如果有智利和中国,StartsWith都会给我。我怎样才能缩小搜索范围?StartsWith只查看第一个字符。但这正是您所要求的“当我输入文本框时,我希望任何以文本框中的内容开头的国家/地区都显示出来。”。用你自己的话来说“以”开头。如果你想要一些不同的东西,那么更新你的问题,更详细地说明你想要什么。
// 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;