2016-10-04 44 views
0

我試圖在datagridViewtextBoxColumn中添加AutoCompleteSource。我正在嘗試兩種方法。第一種方法是直接將AutoCompleteSource添加到datagridViewColumn中。在第二個我在所需的單元格上創建了​​一個文本框,並添加了AutocompleteCustome Source。但是沒有任何例外。datagridviewtextBoxColumn中的自動完成源

private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e) 
{ 
DataGridViewCell cel = dataGridView1.CurrentCell; 
DataGridViewRow row = dataGridView1.CurrentRow; 
    if (e.Control.GetType() == typeof(DataGridViewTextBoxEditingControl)) 
     { 
      if (cel == row.Cells[1]) 
      { 

       DataGridViewTextBoxEditingControl t = e.Control as DataGridViewTextBoxEditingControl; 
       AutoCompleteStringCollection ccl = new AutoCompleteStringCollection(); 
       foreach (DataRow rw in bowoniDataSet17.item.Rows) 
       { 

        ccl.Add(rw.ToString()); 
       } 
       t.AutoCompleteSource = AutoCompleteSource.CustomSource; 
       t.AutoCompleteCustomSource = ccl; 
       t.AutoCompleteMode = AutoCompleteMode.SuggestAppend; 

      } 

     } 
    } 
TextBox tb = new TextBox(); 

private void dataGridView1_KeyDown(object sender, KeyEventArgs e) 
    { 

     DataGridViewRow row = dataGridView1.CurrentRow; 
     DataGridViewCell cel = dataGridView1.CurrentCell; 
     Rectangle rect=dataGridView1.GetCellDisplayRectangle(dataGridView1.CurrentCell.ColumnIndex,dataGridView1.CurrentCell.RowIndex,true); 
     tb.Size = new Size(rect.Width, rect.Height); 
     tb.Location = new Point(rect.X, rect.Y); 
     tb.TextAlignChanged += new EventHandler(tbtx_OnTextChanged); 
     if (cel == row.Cells[1]) 
     { 


      AutoCompleteStringCollection ccl = new AutoCompleteStringCollection(); 
      foreach (DataRow rw in bowoniDataSet17.item.Rows) 
      { 

       ccl.Add(rw.ToString()); 
      } 
      tb.AutoCompleteSource = AutoCompleteSource.CustomSource; 
      tb.AutoCompleteCustomSource = ccl; 
      tb.AutoCompleteMode = AutoCompleteMode.SuggestAppend; 

     } 
    } 

private void tbtx_OnTextChanged(object sender, EventArgs e) 
    { 
     dataGridView1.CurrentCell.Value = tb.Text; 
    } 
+0

您能否指定拋出哪個異常? – EFrank

+0

我沒有提到異常 – mofidul

回答

0

現在我把它改成了DataGridViewComboxColumn.Working很好。