投稿者 SSD  (社会人) 投稿日時 2023/3/10 10:31:24
今更ですが自己解決しました。

バインド時に自動生成される列をボタン列にしようとするのではなく、
あらかじめDataGridViewにボタン列を追加してDataPropertyNameに
バインドするオブジェクトのプロパティー名を指定することで実現できました。

以下のような感じです。

Dim grid as New DataGridView
Dim column as New DataGridViewButtonColumn With {
  .Name = "ABC",
  .DataPropertyName = NameOf(MyClass.A)
}
grid.Columns.Add(column)
grid.DataSource = New List(Of MyClassFrom {
  New MyClass With {
    .A = True,
    .B = 123,
    .C = "abc"
  }
}

列の順番を制御したいとなるとバインドするオブジェクトのプロパティーすべてに対応する列をあらかじめ追加しておく必要があるのが少し難点ですが、やりたいことはこれで実現できました。