我有以下课程:
[System.Serializable]
public class CarParts
{
public string PartId { get; set; }
public int PartCost { get; set; }
public Button Edit{ get; set; }
}
我想做的是:
List<CarParts> parts = new List<CarParts>();
(fill parts)
m_StockParts.Columns.Add()//map column to 'Edit'
m_StockParts.Columns.Add()//map column to 'PartId'
m_StockParts.Columns.Add()//map column to 'PartCost'
我该怎么做呢?
最佳答案
您可以这样使用DataSource
:
List<CarParts> parts = new List<CarParts>();
parts.Add(new CarParts(){PartId = "2", PartCost = 233, Edit =new Button(){Text = "btn"}});
InitializeComponent();
dataGridView1.DataSource = parts;
然后得到这样的东西:
至于按钮列。据我所知,您不能在DataSource中添加按钮列,而必须手动添加。您可以在
CarParts
中保留一个方法来处理按钮而不是按钮本身,然后执行以下操作:var buttonCol = new DataGridViewButtonColumn();
buttonCol.Name = "ButtonColumnName";
buttonCol.HeaderText = "Edit";
buttonCol.Text = "Edit";
dataGridView1.Columns.Add(buttonCol);
并浏览按钮,将其注册到carParts的方法