2015-03-25 115 views
1

我想在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; 

回答

0

你可以尝试这样的事情

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 ! "); 
      } 
     } 
+0

但是为什么我们在droplist类型? – tharif 2015-03-25 05:03:42

+0

@utility ComboBox显示一个文本框与一个ListBox结合在一起,使用户可以从列表中选择项目或输入新值。 – 2015-03-25 05:09:45

+0

如果我没有错误OP想改变下拉的风格,但他担心如果他改变下拉别人可以编辑它们并直接保存。你没有添加他的功能 – tharif 2015-03-25 05:11:53