自定义搜索AutoCompleteStringCollection

本文关键字:AutoCompleteStringCollection 搜索 自定义 | 更新日期: 2023-09-27 18:14:43

是否有办法将AutoCompleteStringCollection类的搜索功能更改为TextBox类?现在,我把它放在默认搜索功能中,我的建议的开头字母与用户输入的字母匹配?我的建议来自自定义源

自定义搜索AutoCompleteStringCollection

您可以使用TextChange创建自己的自动完成搜索下面是答案:c# winforms combobox动态自动完成

代码:

string[] data = new string[] {
    "Absecon","Abstracta","Abundantia","Academia","Acadiau","Acamas",
    "Ackerman","Ackley","Ackworth","Acomita","Aconcagua","Acton","Acushnet",
    "Acworth","Ada","Ada","Adair","Adairs","Adair","Adak","Adalberta","Adamkrafft",
    "Adams"
};
public Form1()
{
    InitializeComponent();
}
private void comboBox1_TextChanged(object sender, EventArgs e)
{
    HandleTextChanged();
}
private void HandleTextChanged()
{
    var txt = comboBox1.Text;
    var list = from d in data
               where d.ToUpper().StartsWith(comboBox1.Text.ToUpper())
               select d;
    if (list.Count() > 0)
    {
        comboBox1.DataSource = list.ToList();
        //comboBox1.SelectedIndex = 0;
        var sText = comboBox1.Items[0].ToString();
        comboBox1.SelectionStart = txt.Length;
        comboBox1.SelectionLength = sText.Length - txt.Length;
        comboBox1.DroppedDown = true;
        return;
    }
    else
    {
        comboBox1.DroppedDown = false;
        comboBox1.SelectionStart = txt.Length;
    }
}
private void comboBox1_KeyUp(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Back)
    {
        int sStart = comboBox1.SelectionStart;
        if (sStart > 0)
        {
            sStart--;
            if (sStart == 0)
            {
                comboBox1.Text = "";
            }
            else
            {
                comboBox1.Text = comboBox1.Text.Substring(0, sStart);
            }
        }
        e.Handled = true;
    }
}
相关文章:
  • 没有找到相关文章