长话短说,我有这个dataGridView,我希望单元格[0,0]成为网格左下角的单元格,而不是像默认情况下那样在网格的左上角。
例如,在视觉上,如果我做了类似的事情:
dataGridView1[0, 0].Value = "a";
I get this (sorry not enough reputation to post pictures)
但我希望通过执行相同的指令,在蓝色突出显示的插槽中显示“a”,并通过添加行等内容添加到网格顶部。
非常感谢提前和问候
答案 0 :(得分:4)
创建一个这样的类:
public class MyDataGridView : DataGridView
{
public new DataGridViewCell this[int col, int invertRow]
{
get
{
int recordCount = this.RowCount - (this.AllowUserToAddRows ? 2 : 1);
return this.Rows[recordCount - invertRow].Cells[col];
}
set
{
int recordCount = this.RowCount - (this.AllowUserToAddRows ? 2 : 1);
this.Rows[recordCount - invertRow].Cells[col] = value;
}
}
}
并称之为:
dataGridView1[0, 0].Value = "a";
或者如果您只想在网格的左上角设置或获取第一个单元格,那么您可以使用FirstDisplayedCell属性。
MSDN:获取或设置当前在DataGridView中显示的第一个单元格;通常,此单元格位于左上角。
例如:
dataGridView1.FirstDisplayedCell.Value = "a";
答案 1 :(得分:4)
在没有扩展类的情况下,没有本地方法可以做你想做的事情,但是你可以使用扩展方法来为你反转行索引:
public static DataGridViewCell FromLowerLeft(this DataGridView dgv, int columnIndex, int invertedRowIndex)
{
return dgv[columnIndex, dgv.RowCount - invertedRowIndex];
}
这可以用作
dataGridView.FromLowerLeft(0,0).Value = "a";