2010-11-19 7 views
7

Ho qualche problema con VisualStudio 2010 C# Winforms.DataGridViewComboBox - Come consentire qualsiasi valore?

Ho creato un DataGridView con una colonna non associata che è di tipo DataGridViewComboBoxColumn. La colonna funziona bene, tranne che a differenza di un normale ComboBox, non riesco a digitare solo un valore. Sono costretto a scegliere un valore dalla lista.

C'è una proprietà che ho bisogno di impostare o un altro tipo che posso usare che mi permetterà di inserire qualsiasi valore nella cella oltre a fornire un elenco da cui prelevare un valore?

Grazie!

risposta

10

Io non credo che ci sia una proprietà che permetterà questo, ma ho trovato una risposta here che ha lavorato con una piccola modifica .

Prova ad aggiungere i seguenti gestori di eventi 2, qui assumendo una colonna denominata 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

Perfetto! Grazie! –

0

DataGridViewComboBoxColumn è progettato piuttosto per la selezione da possibili valori, non per la digitazione dei dati. Se si desidera aggiungere tutti i dati, si dovrebbe fare a livello di codice per DataGridViewComboBoxCell desiderata:

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