public override void Print(System.Windows.Forms.DataGridView dgv) { base.Print(dgv); // now first three rows are filled with dictonary data dgv.SuspendLayout(); dgv.ColumnCount = dgv.ColumnCount + 2; // we want to print vector at the begining, so shift current rows down dgv.Rows.Insert(0, 3); // prepare enought room to fit vector in width if (dgv.ColumnCount < vector.Length) { dgv.ColumnCount = vector.Length; } // Print (up?) vector for (int j = 0; j < vector.Length; j++) { dgv[j, 0].Value = Convert.ToChar(Convert.ToUInt32('A') + j); if (vector[j] != 0) { dgv[j, 1].Value = vector[j].ToString(); } } dgv.Columns.RemoveAt(dgv.ColumnCount - 1); dgv.AutoResizeColumns(); dgv.AutoResizeRows(); dgv.ResumeLayout(false); if (dgv.SelectedCells != null && dgv.SelectedCells.Count > 0) { dgv.SelectedCells[0].Selected = false; } }