如何在ComboBox中为文件列表启用自动完成

时间:2016-09-24 19:31:22

标签: c# winforms combobox

我尝试在用户桌面上获取所有“.txt”文件,并将其作为自定义来源显示在ComboBox中,如下所示。顺便说一下,我通过IDE创建了ComboBox。以下代码位于form1_Load事件中:

string desktop_path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
string[] files_on_desktop = System.IO.Directory.GetFiles(desktop_path, "*.txt");
AutoCompleteStringCollection file_collection = new AutoCompleteStringCollection();
file_collection.AddRange(files_on_desktop);
comboBox1.AutoCompleteCustomSource = file_collection;
comboBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
comboBox1.AutoCompleteSource = AutoCompleteSource.CustomSource;

虽然我尝试了许多不同的方式以及许多支持代码,例如“this.Refresh()combobox.Refresh()”,但这似乎不起作用。

当我打开下拉列表时,它不显示文件,当我开始输入时它也不会显示文件。

实际上,每当我尝试动态做事我可以在IDE上做,我就会遇到一些问题。

1 个答案:

答案 0 :(得分:1)

您添加的文件包括路径和文件名,例如 C:\ Users \ R.Aghaei \ Desktop \ Test.txt 。如果您只需要查看文件名,则可以使用as来获取文件名。

此外,如果您只是为自动填充显示这些文件名,那么System.IO.Path.GetFileName(x)就足够了。如果您想使用TextBox,最好将这些文件添加到Items集合中,然后将自动完成源设置为列表项。

ComboBoxAutoCompleteSource不同。您应该将这些文件名添加到Items,以便在单击下拉按钮时显示。为此,请使用Items。然后,只需将comboBox1.Items.AddRange(files_on_desktop);设置为AutoCompleteSourceMode即可。然后你有两个项目并自动完成。如果单击下拉按钮,您将看到所有可用项目。如果您只输入框,则自动完成功能将适用于您。

AutoCompleteSource.ListItems