C# 绑定单个对象';将字段和值转换为两列数据网格格式

C# 绑定单个对象';将字段和值转换为两列数据网格格式,c#,winforms,reflection,datagridview,C#,Winforms,Reflection,Datagridview,我有一个模型课,如下所示 public class EmployeeModel { public string Name { get; set; } public int Age { get; set; } public double Salary { get; set; } } 我希望它的字段和值映射到WinFormDataGridView,如下所示 我采用了下面这样的反思策略 EmployeeModel emp = new EmployeeModel(); emp

我有一个模型课,如下所示

public class EmployeeModel
{
    public string Name { get; set; }
    public int Age { get; set; }
    public double Salary { get; set; }
}
我希望它的字段和值映射到WinFormDataGridView,如下所示

我采用了下面这样的反思策略

EmployeeModel emp = new EmployeeModel();
emp.Name = "Dev";
emp.Age = 25;
emp.Salary = 150000;

PropertyInfo[] props = typeof(EmployeeModel).GetProperties();
foreach (PropertyInfo prop in props)
{                
    object val = prop.GetValue(emp, null);
    dataGridView1.Rows.Add(prop.Name, val);          
}
现在,我可能需要循环这些列并进行一些反射,以将这些值转换为EmployeeModel对象。我觉得我走错了方向

我有两个问题

  • 以这种方式将类对象绑定到DataGridView的最佳方式是什么
  • 假设我的类包含一个字段(例如,Grade(integer))。此字段值需要作为datagrid内的组合框填充,其中包含诸如“经理、开发人员、CEO”等值。在这种情况下需要做什么

  • 为此,请使用
    PropertyGrid

    EmployeeModel emp = new EmployeeModel();
    emp.Name = "Dev";
    emp.Age = 25;
    emp.Salary = 150000;
    
    如果要通过设计器将
    PropertyGrid
    添加到表单中,
    然后只需将您的对象设置为
    SelectedObject
    ,控件将处理其余部分

    this.MyPropertygrid.Text = "Employee";
    this.MyPropertyGrid.SelectedObject = emp;
    

    是否需要注释??不能在同一列中使用不同的控件(
    combobox
    TextBox
    ),也许您想使用
    PropertyGrid
    control@Fabio-但我可以将第二列设置为combobox,并使其在其他属性中显示为平面样式,以模拟相同的为什么如果存在另一个控件,则该控件正好用于您需要的目的:或另一个@Fabio-谢谢!这对我来说是一场革命你能补充一下吗?我会接受的。。