第一种方法,可以绑定数据库。combobox控件中就会显示绑定的数据库字段值,但是模糊查询只能从左到右输入。

例如,数据库字段值有:A001,A002,A003,B001,B002,B003。只能输入A……或者B……才能查询,若是输入1或者2或者3,根本无法模糊查询。

需要改的属性为,combobox的 AutoCompleteMode 为SuggestAppend;  AutoCompleteSource 为ListItems。

第二种方法是写combobox的TextUpdate事件。

1、用一个List<string> listOnit存放初始化数据,用一个List<string> listNew存放输入key之后,返回的数据。

public partial class UI_TEST : Form
    {
        //初始化绑定默认关键词(此数据源可以从数据库取)
        List<string> listOnit = new List<string>();
        //输入key之后,返回的关键词
        List<string> listNew = new List<string>();
        public UI_TEST ()

        {

               InitializeComponent(); 

       }

2、用上面的listOnit初始化ComboBox数据源进行绑定。

private void BindComboBox()
        {
             //查询出来 循环添加数据
            SqlConnection con = new SqlConnection("Data Source=服务器IP;Password=数据库密码;User ID=数据库用户;Initial Catalog=数据库名称");
            con.Open();
            string sql = "SELECT  NAME FROM STUDENT";
            SqlDataAdapter sure = new SqlDataAdapter();
            sure.SelectCommand = new SqlCommand(sql, con);
            DataSet dst = new DataSet();
            sure.Fill(dst);
            for (int i = 0; i < dst.Tables[0].Rows.Count; i++)
            {
                listOnit.Add(dst.Tables[0].Rows[i][0].ToString());
            }

            this.comboBox2.Items.AddRange(listOnit.ToArray());
        }

在FORM窗体的load事件中添加BindComboBox();在窗体初始运行的时候加载数据库字段值。

private void UI_TEST_Load(object sender, EventArgs e)
        {
            BindComboBox();

       }

3、写TextUpdate事件,实现模糊查询。

 private void comboBox2_TextUpdate(object sender, EventArgs e)
        {
            //清空combobox
            this.comboBox2.Items.Clear();
            //清空listNew
            listNew.Clear();
            //遍历全部备查数据
            foreach (var item in listOnit)
            {
                if (item.Contains(this.comboBox2.Text))
                {
                    //符合,插入ListNew
                    listNew.Add(item);
                }
            }
            //combobox添加已经查到的关键词
            this.comboBox2.Items.AddRange(listNew.ToArray());
            //设置光标位置,否则光标位置始终保持在第一列,造成输入关键词的倒序排列
            this.comboBox2.SelectionStart = this.comboBox2.Text.Length;
            //保持鼠标指针原来状态,有时候鼠标指针会被下拉框覆盖,所以要进行一次设置。
            Cursor = Cursors.Default;
            //自动弹出下拉框
            this.comboBox2.DroppedDown = true;
        }

 

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐