How do I find the top-left visible cell in a datagrid

Platform: WinForms| Category: Datagrid

In a Windows Forms DataGrid, there is no property exposed that gives you this information. But here is little trick that will allow you to get the top-left visible cell.

1) Add a private member Point pointInCell00 to the form containing the datagrid.

2) After the datagrid has been initialized, but before your user has been able to scroll it (say at the end of the Form_Load event), use code such as this to initialize pointInCell00 to be a point in cell 0,0.

	pointInCell00 = new Point(dataGrid1.GetCellBounds(0,0).X + 4, dataGrid1.GetCellBounds(0,0).Y + 4);

3) Then add this method to return DataGridCell that is the top-left cell.

	public DataGridCell TopLeftVisibleCell()
	{
		DataGrid.HitTestInfo hti = dataGrid1.HitTest(this.pointInCell00);
		return new DataGridCell(hti.Row, hti.Column);
	}

	//sample usage...
	private void button1_Click(object sender, System.EventArgs e)
	{
		DataGridCell dgc = TopLeftVisibleCell();

		MessageBox.Show(dgc.RowNumber.ToString() + '   ' + dgc.ColumnNumber.ToString());
	}

Share with

Related FAQs

Couldn't find the FAQs you're looking for?

Please submit your question and answer.