Windows 窗体:更改 dataGridView 的第一个单元格原点

本文关键字:第一个 单元格 原点 dataGridView 窗体 更改 Windows | 更新日期: 2023-09-27 17:55:15

长话短说,我有这个 dataGridView,我希望单元格 [0,0] 是网格左下角的单元格,而不是像默认情况下那样位于网格的左上角。

例如,在视觉上,如果我做这样的事情:

dataGridView1[0, 0].Value = "a";

我明白了(对不起,没有足够的声誉来发布图片)

但我希望"a"通过执行相同的指令出现在蓝色突出显示的插槽中,并且通过执行诸如添加行之类的操作,它将添加到网格的顶部。

提前非常感谢和问候

Windows 窗体:更改 dataGridView 的第一个单元格原点

创建一个这样的类:

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";