这是我的枚举类:
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});
但错误显示“...值无效”
答案 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;
感谢很多人的帮助!