You can directly access the GridData object instead of using an indexer on the grid. This will avoid events and probably be a factor of 5 - 10 times faster.
private void button1_Click(object sender, System.EventArgs e)
{
int nRows = 8500;
int nCols = 25;
Random r = new Random();
this.Cursor = Cursors.WaitCursor;
int ticks = Environment.TickCount;
this.gridControl1.BeginUpdate();
this.gridControl1.RowCount = nRows;
this.gridControl1.ColCount = nCols;
GridData data = this.gridControl1.Data;
for(int i = 1; i <= nRows; ++i)
{
for(int j = 1; j <= nCols; ++j)
{
// instead of this.gridControl1[i,j].CellValue = ????
//use this code
GridStyleInfo style = new GridStyleInfo();
style.CellValue = r.Next(100000);
data[i, j] = style.Store;
}
}
this.gridControl1.EndUpdate();
this.gridControl1.Refresh();
this.Cursor = Cursors.Default;
this.label1.Text = string.Format("{0} ticks", Environment.TickCount - ticks);
}