我有以下课程:

    [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的方法

07-24 12:36