2010-11-19 77 views
7

我在VisualStudio 2010 C#Winforms中遇到了一些麻煩。DataGridViewComboBox - 如何允許任何值?

我創建了一個DataGridView,其中包含DataGridViewComboBoxColumn類型的未綁定列。該列工作正常,除了不像一個普通的ComboBox,我似乎無法輸入任何值。我不得不從列表中選擇一個值。

是否有一個屬性,我需要設置或另一種類型,我可以使用,這將允許我在單元格中輸入任何值,除了提供一個列表來選擇一個值?

謝謝!

回答

10

我不覺得有什麼,讓這樣的屬性,但我找到了答案here與一個小的修改工作。

嘗試添加下列2事件處理程序,這裏假設一列名爲comboBoxColumn

private void dataGridView1_EditingControlShowing(object sender, 
     DataGridViewEditingControlShowingEventArgs e) 
{ 
    ComboBox c = e.Control as ComboBox; 
    if (c != null) c.DropDownStyle = ComboBoxStyle.DropDown; 
} 

private void dataGridView1_CellValidating(object sender, 
     DataGridViewCellValidatingEventArgs e) 
{ 
    if (e.ColumnIndex == comboBoxColumn.Index) 
    { 
     object eFV = e.FormattedValue; 
     if (!comboBoxColumn.Items.Contains(eFV)) 
     { 
      comboBoxColumn.Items.Add(eFV); 
      dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = eFV; 
     } 
    } 
} 
+0

完美!謝謝! – 2010-11-22 14:40:46

0

DataGridViewComboBoxColumn被設計爲用於從可能值中進行選擇 - 而不是用於輸入數據。如果你想添加任何數據,你應該期望的DataGridViewComboBoxCell做編程:

((DataGridViewComboBoxCell)dataGridView1[0,0]).Items.AddRange(new string [] {"A","B","C"});