2010-11-19 13 views
7

Tengo algunos problemas con VisualStudio 2010 C# Winforms.DataGridViewComboBox - ¿Cómo se permite cualquier valor?

He creado un DataGridView con una columna independiente que es del tipo DataGridViewComboBoxColumn. La columna funciona bien, excepto que a diferencia de ComboBox normal, parece que no puedo escribir cualquier valor. Me veo obligado a elegir un valor de la lista.

¿Hay alguna propiedad que necesite configurar u otro tipo que pueda usar que me permita ingresar cualquier valor en la celda además de proporcionar una lista para elegir un valor?

Gracias!

Respuesta

10

No creo que hay una propiedad que va a permitir esto, pero me pareció una respuesta here que trabajó con una pequeña modificación .

Trate de añadir los siguientes manejadores de eventos 2, aquí asumiendo una columna nombrada 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

perfecto! ¡Gracias! –

0

DataGridViewComboBoxColumn está diseñado más bien para seleccionar entre posibles valores, no para escribir datos. Si desea añadir algún dato, debe hacerlo mediante programación para DataGridViewComboBoxCell deseada:

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