从Enums填充Datagridview中的ComboBox

时间:2018-05-17 08:15:17

标签: c# datagridview enums

这是我的枚举类:

   public enum Uom
        {
            not_known,
            lbs,
            psi,
            tank,
            tube,
            each,
            gallon,
            meters,
            cc,
            mg,
            bag,
            capsule
    }

我想在datagridview1的第二列填充组合框。我试过这段代码:

DataGridViewComboBoxColumn dtgcombo = new DataGridViewComboBoxColumn();

dtgcombo.DataSource = Enum.GetNames(typeof(Uom));

datagridview1.Rows.Add(new object[] { "0", dtgcombo});

但错误显示“...值无效”

3 个答案:

答案 0 :(得分:0)

尝试

datagridview1.Columns.Add(dtgcombo);

将组合框添加为所有行的列。

答案 1 :(得分:0)

代码正在尝试将DataGridviewColumn添加到DataGridViewCell.这将无法正常工作。此外,将相同的组合框添加到列中的每个单元格都没有意义。您应该在工程师回答时将DataGridViewComboBoxColumn添加到DataGridView。然后,当您添加一行并且知道要使用enum时...然后您将添加如下行:datagridview1.Rows.Add("0", Uom.tank.ToString());第二个参数可以是任何枚举。下面的代码应该完成你想要做的事情。第二列是组合框列。

DataGridViewComboBoxColumn dtgcombo = new DataGridViewComboBoxColumn();
dtgcombo.DataSource = Enum.GetNames(typeof(Uom));
dataGridView1.Columns.Add(dtgcombo);
dataGridView1.Rows.Add("0", Uom.meters.ToString());
dataGridView1.Rows.Add("0", "");
dataGridView1.Rows.Add("0", Uom.not_known.ToString());

答案 2 :(得分:0)

这是我到目前为止的答案..忘记了我的参考链接

var dtgcombo = new DataGridViewComboBoxCell();
dtgcombo.DataSource = Enum.GetNames(typeof(Uom)); 

int n = dtgRequests.Rows.Add();
    datagridview1.Rows[n].Cells[0].Value = "0";
    datagridview1.Rows[n].Cells[1] = dtgcombo;

感谢很多人的帮助!