Как перейти из одной ячейки в другую ячейку в datagridview при вводе в windows form C#
я добавил столбцы в представление таблицы данных программно. и когда я пытаюсь перейти из одной ячейки в другую по щелчку enter, его навигация не является правильной.
вот мой код
public void bind_grid() { itemgrid1.ColumnCount = 5; itemgrid1.AutoGenerateColumns = false; itemgrid1.Columns[0].HeaderText = "Item_Description"; itemgrid1.Columns[0].Name = "Item_Description"; itemgrid1.Columns[0].Visible = true; itemgrid1.Columns[0].Width = 278; itemgrid1.Columns[0].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleLeft; //itemgrid1.Columns["Item_Description"].DisplayIndex = 0; itemgrid1.Columns[1].HeaderText = "Quantity"; itemgrid1.Columns[1].Name = "Quantity"; itemgrid1.Columns[1].Visible = true; itemgrid1.Columns[1].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter; //itemgrid1.Columns["Item_Description"].DisplayIndex = 2; itemgrid1.Columns[2].HeaderText = "Converstion_Type"; itemgrid1.Columns[2].Name = "Converstion_Type"; itemgrid1.Columns[2].Visible = true; itemgrid1.Columns[2].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter; //itemgrid1.Columns["Item_Description"].DisplayIndex = 4; itemgrid1.Columns[3].HeaderText = "Rate"; itemgrid1.Columns[3].Name = "Rate"; itemgrid1.Columns[3].Visible = true; itemgrid1.Columns[3].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter; //itemgrid1.Columns["Item_Description"].DisplayIndex = 5; itemgrid1.Columns[4].HeaderText = "amount"; itemgrid1.Columns[4].Name = "amount"; itemgrid1.Columns[4].Visible = true; itemgrid1.Columns[4].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter; itemgrid1.Columns[4].ReadOnly = true; //itemgrid1.Columns["Item_Description"].DisplayIndex = 6; itemgrid1.Columns.Add(Units); itemgrid1.Columns.Add(HSN_Code); itemgrid1.GridColor = Color.FromArgb(211, 225, 229); itemgrid1.BackgroundColor = Color.Wheat; itemgrid1.RowsDefaultCellStyle.BackColor = Color.AliceBlue; itemgrid1.RowsDefaultCellStyle.SelectionBackColor = Color.CornflowerBlue; itemgrid1.RowsDefaultCellStyle.SelectionForeColor = Color.White; itemgrid1.Rows.Add(new DataGridViewRow()); }
Что я уже пробовал:
<pre>private void itemgrid1_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) { e.SuppressKeyPress = true; int iColumn = itemgrid1.CurrentCell.ColumnIndex; int iRow = itemgrid1.CurrentCell.RowIndex; if (iColumn == itemgrid1.Columns.Count - 1) { itemgrid1.Rows.Add(new DataGridViewRow()); itemgrid1.CurrentCell = itemgrid1[0, iRow + 1]; } else itemgrid1.CurrentCell = itemgrid1[iColumn + 1, iRow]; } }
private void itemgrid1_CellEndEdit(object sender, DataGridViewCellEventArgs e) { LastColumnIndex = e.ColumnIndex; LastRowIndex = e.RowIndex; if (itemgrid1.ColumnCount - 1 == e.ColumnIndex) //if last column { //KeyEventArgs forKeyDown = new KeyEventArgs(Keys.Enter); itemgrid1.Rows.Add(new DataGridViewRow()); itemgrid1.CurrentCell = itemgrid1[0, e.RowIndex + 1]; } else { if (e.RowIndex > 0) itemgrid1.CurrentCell = itemgrid1[e.ColumnIndex + 1, e.RowIndex]; else { SendKeys.Send("{UP}"); SendKeys.Send("{RIGHT}"); } } }