MukulMohal Ответов: 1

Как перейти из одной ячейки в другую ячейку в 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}");
        }
    }

}

1 Ответов

Рейтинг:
1

OriginalGriff

В принципе, нет.

Есть стандартные функции, которые пользователи ожидают от клавиш, и ENTER - это ключ, который выполняет определенную роль: он принимает ввод и отправляет его на обработку. Перемещение между ячейками - это функция клавиши TAB, и вы возитесь с ней на свой страх и риск. Создание нестандартного приложения расстроит пользователей, которые должны помнить, что "ваше приложение работает по-другому", и это окрашивает весь их опыт; все их отношение к вашему приложению.

Подрывной ввод для выполнения работы TAB - это плохая идея со стороны стандартизированного пользовательского интерфейса POV-и часто будет препятствовать тому, чтобы пользователи вообще хотели использовать ваше приложение!


MukulMohal

но что делать, если это требование пользователя?