2015-03-25 122 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