2010-11-19 6 views
7

VisualStudio 2010 C#Winformsに問題があります。DataGridViewComboBox - どのように値を許可する?

DataGridView型をDataGridViewComboBoxColumn型のバインドされていない列で作成しました。通常のComboBoxとは異なり、カラムは正常に動作しますが、値を入力するだけでは表示されません。私はリストから値を選ぶことを強いられます。

設定する必要があるプロパティや、値を選択するためのリストを提供するだけでなく、セルに任意の値を入力できる別のタイプがありますか?

ありがとうございます!

答えて

10

私はこれを許可するプロパティがあるとは思わないが、私は小さな変更で働いていた答えhereを見つけました。

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

パーフェクト:ここcomboBoxColumnという名前の列を想定して、以下の2つのイベントハンドラを追加する

お試しください!ありがとう! –

0

DataGridViewComboBoxColumnは、データを入力するのではなく、可能な値から選択するように設計されています。あなたが任意のデータを追加したい場合は、希望DataGridViewComboBoxCellのためのプログラムでそれを行う必要があります。

((DataGridViewComboBoxCell)dataGridView1[0,0]).Items.AddRange(new string [] {"A","B","C"}); 
関連する問題