为什么我的自动完成不会留下来



我有这行代码来帮助我自动完成文本框。它确实建议,但在我选择之前,它会在 2 秒内消失。如何让它保留到我选择一个选项?

        void autoComplete()
    {
        searchTxtBox.AutoCompleteMode = AutoCompleteMode.Suggest;
        searchTxtBox.AutoCompleteSource = AutoCompleteSource.CustomSource;
        AutoCompleteStringCollection coll = new AutoCompleteStringCollection();
        SqlConnection con = new SqlConnection(@"Data Source=.;Initial Catalog=Cmanager;Integrated Security=True");
        SqlCommand comm = new SqlCommand("Select * from NEWMEMBER", con);
        SqlDataReader reader;
        try
        {
            con.Open();
            reader = comm.ExecuteReader();
            while (reader.Read())
            {
                if (nameRadBtn.Checked) 
                { 
                string databaseAuto = (reader["Surname"].ToString());
                coll.Add(databaseAuto);
                }
                if (idRadBtn.Checked)
                {
                    string databaseAuto = (reader["MemberID"].ToString());
                    coll.Add(databaseAuto);
                }
                if (deptRadBtn.Checked)
                {
                    string databaseAuto = (reader["DeptID"].ToString());
                    coll.Add(databaseAuto);
                }
            }
            con.Close();
        }
        catch (Exception)
        {
            throw;
        }
        searchTxtBox.AutoCompleteCustomSource = coll;
    }
    private void searchTxtBox_KeyUp(object sender, KeyEventArgs e)
    {
        autoComplete();
    }
您需要

使用TextChanged()事件而不是KeyUp 。此外,您无需在像这样使用之前绑定AutoComplete source。但是,在使用自动完成之前设置textbox属性,并使用字段变量进行AutoCompleteStringCollection

试试这个解决方案,

  // Private field
  private AutoCompleteStringCollection coll = new AutoCompleteStringCollection();
  public Form1(){
        InitializeComponent();
        ....
        searchTxtBox.AutoCompleteMode = AutoCompleteMode.Suggest;
        searchTxtBox.AutoCompleteSource = AutoCompleteSource.CustomSource;
  }
    void autoComplete()
       {
            SqlConnection con = new SqlConnection(@"Data Source=.;Initial Catalog=Cmanager;Integrated Security=True");
            SqlCommand comm = new SqlCommand("Select * from NEWMEMBER", con);
            SqlDataReader reader;
            try
            {
                con.Open();
                reader = comm.ExecuteReader();
                while (reader.Read())
                {
                    if (nameRadBtn.Checked) 
                    { 
                    string databaseAuto = (reader["Surname"].ToString());
                    coll.Add(databaseAuto);
                    }
                    if (idRadBtn.Checked)
                    {
                        string databaseAuto = (reader["MemberID"].ToString());
                        coll.Add(databaseAuto);
                    }
                    if (deptRadBtn.Checked)
                    {
                        string databaseAuto = (reader["DeptID"].ToString());
                        coll.Add(databaseAuto);
                    }
                }
                con.Close();
            }
            catch (Exception)
            {
                throw;
            }
        }
     private void searchTxtBox_TextChanged(object sender, KeyEventArgs e)
     {
         col.clear() // Clear older entries
         autoComplete();
         searchTxtBox.AutoCompleteCustomSource = coll;
     }

最新更新