- Индекс был вне досягаемости. Должно быть неотрицательным и меньше размера коллекции. Имя параметра: индекс'
Я создаю приложение для windows на языке c#. При использовании datagridview я получаю эту ошибку.
protected override bool ProcessCmdKey(ref System.Windows.Forms.Message msg,System.Windows.Forms.Keys keyData) { if (keyData == Keys.Enter) { // ON ENTER KEY, GO TO THE NEXT CELL. // WHEN THE CURSOR REACHES THE LAST COLUMN, CARRY IT ON TO THE NEXT ROW. if (ActiveControl.Name == "grdsearch") { // CHECK IF ITS THE LAST COLUMN if (grdsearch.CurrentCell.ColumnIndex == grdsearch.ColumnCount - 1) { // GO TO THE FIRST COLUMN, NEXT ROW. grdsearch.CurrentCell = grdsearch.Rows[grdsearch.CurrentCell.RowIndex + 1] .Cells[0]; } else { // NEXT COLUMN. grdsearch.CurrentCell = grdsearch.Rows[grdsearch.CurrentRow.Index] .Cells[grdsearch.CurrentCell.ColumnIndex + 1]; } return true; } else if (ActiveControl is DataGridViewTextBoxEditingControl) { // SHOW THE COMBOBOX WHEN FOCUS IS ON A CELL CORRESPONDING TO THE "QUALIFICATION" COLUMN. if (grdsearch.Columns [grdsearch.CurrentCell.ColumnIndex].Name == "Item_Description") { grdsearch.CurrentCell = grdsearch.Rows[grdsearch.CurrentRow.Index] .Cells[grdsearch.CurrentCell.ColumnIndex + 1]; // SHOW COMBOBOX. Show_Combobox(grdsearch.CurrentRow.Index, grdsearch.CurrentCell.ColumnIndex); SendKeys.Send("{F4}"); // DROP DOWN THE LIST. return true; } else { // CHECK IF ITS THE LAST COLUMN. if (grdsearch.CurrentCell.ColumnIndex == grdsearch.ColumnCount - 1) { // GO TO THE FIRST COLUMN, NEXT ROW. grdsearch.CurrentCell = grdsearch.Rows[grdsearch.CurrentCell.RowIndex + 1] .Cells[0]; } else { // NEXT COLUMN. grdsearch.CurrentCell = grdsearch.Rows[grdsearch.CurrentRow.Index] .Cells[grdsearch.CurrentCell.ColumnIndex + 1]; } return true; } } else if (ActiveControl.Name == "ComboBox1") { // HIDE THE COMBOBOX AND ASSIGN COMBO'S VALUE TO THE CELL. grdsearch.Visible = false; grdsearch.Focus(); // ONCE THE COMBO IS SET AS INVISIBLE, SET FOCUS BACK TO THE GRID. (IMPORTANT) grdsearch[grdsearch.CurrentCell.ColumnIndex, grdsearch.CurrentRow.Index].Value = grdsearch.Text; grdsearch.CurrentCell = grdsearch.Rows[grdsearch.CurrentRow.Index] .Cells[grdsearch.CurrentCell.ColumnIndex + 1]; } else { SendKeys.Send("{TAB}"); } return true; } else if (keyData == Keys.Escape) // PRESS ESCAPE TO HIDE THE COMBOBOX. { if (ActiveControl.Name == "ComboBox1") { HSN_Code.Visible = false; grdsearch.CurrentCell = grdsearch.Rows[grdsearch.CurrentCell.RowIndex] .Cells[grdsearch.CurrentCell.ColumnIndex]; grdsearch.Focus(); } return true; } else { return base.ProcessCmdKey(ref msg, keyData); } }
Что я уже пробовал:
Я получаю ошибку внутри
if (grdsearch.CurrentCell.ColumnIndex == grdsearch.ColumnCount - 1) { // GO TO THE FIRST COLUMN, NEXT ROW. grdsearch.CurrentCell = grdsearch.Rows[grdsearch.CurrentCell.RowIndex + 1] .Cells[0]; }
можете вы пожалуйста помочь мне...
Я добавил столбец в представление datagrid программно.