2010-11-19 13 views
7

Ich habe Probleme mit Visual Studio 2010 C# Winforms.DataGridViewComboBox - Wie kann jeder Wert erlaubt werden?

Ich habe eine DataGridView mit einer ungebundenen Spalte vom Typ DataGridViewComboBoxColumn erstellt. Die Spalte funktioniert gut, außer im Gegensatz zu einer normalen ComboBox, kann ich nicht einfach jeden Wert eingeben. Ich bin gezwungen, einen Wert von der Liste auszuwählen.

Gibt es eine Eigenschaft, die ich festlegen oder einen anderen Typ, den ich verwenden kann, der es mir erlaubt, einen beliebigen Wert in der Zelle einzugeben, zusätzlich zu einer Liste, aus der man einen Wert auswählen kann?

Danke!

Antwort

10

Ich glaube nicht, dass es eine Eigenschaft, die das ermöglichen wird, aber ich fand eine Antwort here, die mit einer kleinen Modifikation gearbeitet .

Versuchen Sie, die folgenden 2 Event-Handler hinzugefügt hier eine Spalte comboBoxColumn namens vorausgesetzt:

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

Perfect! Vielen Dank! –

0

DataGridViewComboBoxColumn dient eher zur Auswahl von möglichen Werten - nicht zur Eingabe von Daten. Wenn Sie irgendwelche Daten hinzufügen möchten, sollten Sie es tun programmatisch für die gewünschte DataGridViewComboBoxCell:

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