※随時追加予定です。
TL;DR
- GrapeCity(ActiveX)のように列と行を指定して値を設定する場合のTips
(1)RowCountプロパティを変更すると、指定した値がどんどん下にずれていく
原因
新規行が有効だと、RowCountプロパティは新規行も含めた行数となる。
つまり実際に追加しているのは新規行であるため、行数を増やすと新規行が一番下に来る、という理屈になる
対応策
新規行を無効(AllowUserToAddRows = False
)とすればよい。
ReadOnly = False
なら、AllowUserToAddRows = False
とセットで考えておくとよい。
GrapeCity(ActiveX)に合わせるなら、AllowUserToDeleteRows = False
と設定してもよいだろう。
ソース
修正前
Form1.vb
Private Sub Form_Load(sender As Object, e As EventArgs) Handles Me.Load
DataGridView1.MultiSelect = False
DataGridView1.ReadOnly = False
DataGridView1.ColumnCount = 1
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
DataGridView1.RowCount += 1
DataGridView1.Rows(DataGridView1.RowCount - 1).Cells(1 - 1).Value = $"No{DataGridView1.RowCount}"
修正後
Form1.vb
Private Sub Form_Load(sender As Object, e As EventArgs) Handles Me.Load
DataGridView1.AllowUserToAddRows = False
DataGridView1.MultiSelect = False
DataGridView1.ReadOnly = False
DataGridView1.ColumnCount = 1
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
DataGridView1.RowCount += 1
DataGridView1.Rows(DataGridView1.RowCount - 1).Cells(1 - 1).Value = $"No{DataGridView1.RowCount}"
(2)カスタム列の実装
.NET DataGridViewのカスタムセルを実装する場合の注意点
https://qiita.com/tfukumori/items/6e5876e19d126fdcb85b