【问题标题】:Autocomplete combobox with drop list property具有下拉列表属性的自动完成组合框
【发布时间】:2015-03-25 04:47:12
【问题描述】:

我正在尝试在 C# 中实现一个自动完成组合框。当我将组合框下拉属性设置为“下拉”时,我可以这样做。但是当下拉属性设置为时无法获得结果'下拉列表'。请帮我解决这个问题。

这是我的代码:

var connection=new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\xxx.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True");
            var command=new SqlCommand("SELECT model FROM vehicle",connection);
            var adapter=new SqlDataAdapter(command);
            var ds = new DataSet();
            adapter.Fill(ds);
            AutoCompleteStringCollection col = new AutoCompleteStringCollection();
            int i = 0;
            for (i = 0; i <= ds.Tables[0].Rows.Count - 1; i++)
            {
                col.Add(ds.Tables[0].Rows[i]["model"].ToString());
            }
            comboBox1.AutoCompleteSource = AutoCompleteSource.CustomSource;
            comboBox1.AutoCompleteCustomSource = col;
            comboBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend;  

【问题讨论】:

    标签: c# .net sql-server winforms visual-studio-2010


    【解决方案1】:

    你可以试试这样的

     private void Form1_Load(object sender, EventArgs e)
            {
                comboBox1.AutoCompleteMode = AutoCompleteMode.Suggest;
                comboBox1.AutoCompleteSource = AutoCompleteSource.CustomSource;
                AutoCompleteStringCollection combData = new AutoCompleteStringCollection();
                getData(combData);
                comboBox1.AutoCompleteCustomSource = combData;
            }
            private void getData(AutoCompleteStringCollection dataCollection)
            {
                string connetionString = null;
                SqlConnection connection;
                SqlCommand command;
                SqlDataAdapter adapter = new SqlDataAdapter();
                DataSet ds = new DataSet();
                connetionString = @"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\xxx.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";
                string sql = "SELECT model FROM vehicle";
                connection = new SqlConnection(connetionString);
                try
                {
                    connection.Open();
                    command = new SqlCommand(sql, connection);
                    adapter.SelectCommand = command;
                    adapter.Fill(ds);
                    adapter.Dispose();
                    command.Dispose();
                    connection.Close();
                    foreach (DataRow row in ds.Tables[0].Rows)
                    {
                        dataCollection.Add(row[0].ToString());
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Can not open connection ! ");
                }
            }
    

    【讨论】:

    • 但是我们为什么要输入 droplist 呢?
    • @utility ComboBox 显示一个与 ListBox 组合的文本框,使用户可以从列表中选择项目或输入新值。
    • 如果我没记错的话OP想改变下拉菜单的样式但是他担心如果他改变了下拉菜单其他人可以编辑它们并直接保存。你没有添加他的功能
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-16
    • 2012-12-07
    • 1970-01-01
    • 1970-01-01
    • 2011-05-12
    相关资源
    最近更新 更多