各セルの異なるデータソースを持つDataGridViewコンボボックス

私は構成情報を保持するDataGridViewを作成しようとしています。

使用できる値は、異なる列の値に基づいて列内の各行ごとに変更できるため、comboBox列に単一のデータソースを割り当てることはできません。例:carを選択した場合、使用可能な色はそのモデルで使用できる色に制限する必要があります。

Car                 ColorsAvailable
Camry               {white,black}
CRV                 {white,black}
Pilot               {silver,sage}

dataGridViewを検討する理由は、オペレータが追加の車の行を追加できるようにするためです。

このタイプのUIを実装するための良い設計は何ですか?

1

1 答え

DataGridViewComboBoxCell DataSource を個別に設定することができます。

private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
    if (e.ColumnIndex == 0)//presuming "car" in first column
    {//presuming "ColorsAvailable" in second column
        var cbCell = dataGridView1.Rows[e.RowIndex].Cells[1] as DataGridViewComboBoxCell;
        string[] colors = { "white", "black" };
        switch (dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString())
        {
            case "Pilot": colors = new string[] { "silver", "sage" }; break;
               //case "other": add other colors
        }

        cbCell.DataSource = colors;
    }
}

あなたの色(と多分車)が列挙子のような強い型ならば、私はここに入れ替えている文字列の代わりにそれらの型を使うべきです...

8
追加された
答えをありがとう、正確に私が必要なもの
追加された 著者 DarwinIcesurfer,