我创建了两个类:
public class Params : List<Param>
{
}
public class Param
{
public enum enType
{
Integer,
Double,
String,
DateTime
}
private string sName_m;
public string Name
{
get { return sName_m; }
set { sName_m = value; }
}
private string sValue_m;
public string Value
{
get { return sValue_m; }
set { sValue_m = value; }
}
private enType eType_m;
public enType Type
{
get { return eType_m; }
set { eType_m = value; }
}
}
现在我希望能够在Windows应用程序的网格类型控件中显示Params,因此我将DataGridView拖到我的表单上,并通过选择其他数据源选择数据源 - &gt;项目数据源,然后选择我的参数类(frmMain + Params)。
现在,当我运行应用程序时,我可以添加/删除/编辑记录,网格显示三列。我希望能够做的是将Type列作为下拉列表,让我的选择值在枚举中。目前,我必须键入一个必须与枚举匹配的字符串。可能?
答案 0 :(得分:1)
我从来没有能够自动数据绑定来正确设置DataGridViewComboBoxCell / DataGridViewComboBoxColumn(也不是CheckBox),因此我将AutoGenerateColumns设置为false并手动设置列。
答案 1 :(得分:1)
您可以禁用自动生成列并手动生成所需的正确列,也可以删除列并在其位置添加新列。
var columns = dataGridView1.Columns;
var oldColumn = columns.Cast<DataGridViewColumn>()
.Single(c => c.DataPropertyName == "Type");
var index = columns.IndexOf(oldColumn);
var newColumn = new DataGridViewComboBoxColumn();
newColumn.Name = "Type";
newColumn.DataSource = Enum.GetValues(typeof(Param.enType));
newColumn.ValueType = typeof(Param.enType);
columns.RemoveAt(index);
columns.Insert(index, newColumn);