Tag: 框文本框

我如何dynamic更改C#combobox或文本框中的自动完成条目?

我在C#中有一个combobox,我想使用自动完成的build议,但是我想能够改变自动完成条目作为用户键入,因为可能有效的条目太多,无法在启动时填充AutoCompleteStringCollection 。 作为一个例子,假设我让用户键入一个名字。 我有一个可能的名字(“乔”,“约翰”)和一个姓氏列表(“Bloggs”,“史密斯”)的名单,但如果我有一千个,那么这将是一百万个可能的string – 自动完成条目太多了。 所以最初我想只有第一个名字作为build议(“Joe”,“John”),然后一旦用户键入了名字(“Joe”),我想删除现有的自动完成条目并replace他们用一组新名字组成,后面跟着可能的姓氏(“Joe Bloggs”,“Joe Smith”)。 为了做到这一点,我尝试了下面的代码: void InitializeComboBox() { ComboName.AutoCompleteMode = AutoCompleteMode.SuggestAppend; ComboName.AutoCompleteSource = AutoCompleteSource.CustomSource; ComboName.AutoCompleteCustomSource = new AutoCompleteStringCollection(); ComboName.TextChanged += new EventHandler( ComboName_TextChanged ); } void ComboName_TextChanged( object sender, EventArgs e ) { string text = this.ComboName.Text; string[] suggestions = GetNameSuggestions( text ); this.ComboQuery.AutoCompleteCustomSource.Clear(); this.ComboQuery.AutoCompleteCustomSource.AddRange( suggestions ); } 但是,这不能正常工作。 看起来,调用Clear()会导致自动完成机制“closures”,直到下一个字符出现在combobox中,但当然当下一个字符出现时,上面的代码再次调用Clear(),所以用户从不实际上看到了自动完成function。 […]