您可以使用的一個選項是自動完成。這可以模仿DataGridViewTextCell上的大多數所需行爲,除了顯示進入文本單元格的所有選項以外,並且不需要將單元格類型轉換爲ComboBox。
這可能在DataGridView EditingControlShowing事件進行處理:
private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
if (e.Control is TextBox)
{
TextBox box = e.Control as TextBox;
box.AutoCompleteCustomSource = new AutoCompleteStringCollection();
box.AutoCompleteCustomSource.AddRange(new string[] { "Foo", "Bar", "Baz" });
box.AutoCompleteMode = AutoCompleteMode.Suggest;
box.AutoCompleteSource = AutoCompleteSource.CustomSource;
}
}
考慮,用戶必須對任何選項,以顯示輸入文字。如果所需的行爲需要在輸入文本框時顯示所有選項,則這不是您的最佳選擇。但是,如果這是所有其他所需行爲(建議選項,接受非選項條目,並不總是必須顯示等)的次要條件,則這是一個可行的解決方案。
編輯
這個工作在所有的下列情況:
- 的DataGridView是數據綁定。
綁定數據源:
public BindingList<Example> Examples { get; set; }
this.Examples = new BindingList<Example>();
dataGridView1.DataSource = this.Examples;
在哪裏實施例是一個簡單的類:
public class Example
{
public string First { get; set; }
public string Last { get; set; }
public string Test { get; set; }
}
- 手動添加柱(一個或多個)。
僅有空柱:
DataGridViewTextBoxColumn col = new DataGridViewTextBoxColumn();
col.Name = "Extra";
col.HeaderText = "Extra";
this.dataGridView1.Columns.Add(col);
- 1和2都結合。
我不清楚你使用ComboBoxColumn類型的問題。你爲什麼不能使用它? – LarsTech 2015-02-05 17:40:50
我需要它是一個單元格選項。列中的某些項目不需要下拉(取決於該行上的其他值),而其他項目將向用戶填充完全不同的選項列表。 – Tizz 2015-02-06 02:57:50