Windows 窗体:更改 dataGridView 的第一个单元格原点
本文关键字:第一个 单元格 原点 dataGridView 窗体 更改 Windows | 更新日期: 2023-09-27 17:55:15
长话短说,我有这个 dataGridView,我希望单元格 [0,0] 是网格左下角的单元格,而不是像默认情况下那样位于网格的左上角。
例如,在视觉上,如果我做这样的事情:
dataGridView1[0, 0].Value = "a";
我明白了(对不起,没有足够的声誉来发布图片)
但我希望"a"通过执行相同的指令出现在蓝色突出显示的插槽中,并且通过执行诸如添加行之类的操作,它将添加到网格的顶部。
提前非常感谢和问候
创建一个这样的类:
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";
或者,如果您只想在网格的左上角设置或获取第一个单元格,则可以使用FirstDisplayCell属性。
MSDN:获取或设置当前显示在 DataGridView 中的第一个单元格;通常,此单元格位于左上角。
例如:
dataGridView1.FirstDisplayedCell.Value = "a";
没有本机方法可以在不扩展类的情况下执行所需的操作,但是可以使用扩展方法来反转行索引:
public static DataGridViewCell FromLowerLeft(this DataGridView dgv, int columnIndex, int invertedRowIndex)
{
return dgv[columnIndex, dgv.RowCount - invertedRowIndex];
}
这可以用作
dataGridView.FromLowerLeft(0,0).Value = "a";