powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / DataGridView переключение между ячейкам при нажатии Enter в режиме редактировании
2 сообщений из 2, страница 1 из 1
DataGridView переключение между ячейкам при нажатии Enter в режиме редактировании
    #39776967
kab19
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пиведенный код работает при нажатии клавиши А, но при использовнии Enter дальше 5-го столбца не заходит, то есть отрабатывает только 1 раз.
Код
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
private void dataGridView3_KeyDown(object sender, KeyEventArgs e)
{
            if (e.KeyCode == Keys.ControlKey)
                CtrlPressed = true;
}

private void dataGridView3_KeyUp(object sender, KeyEventArgs e)
{
	if (CtrlPressed && dataGridView3.Rows.Count != 0)
        {
		switch (e.KeyCode)
                {
                    case Keys.ControlKey:
                        CtrlPressed = false;
                        break;
                    case Keys.E:
                        e.Handled = true;
                        int CurrentRow = dataGridView3.CurrentRow.Index;
                        DataGridViewCell CurrentCell = dataGridView3.Rows[CurrentRow].Cells[1];
                        dataGridView3.CurrentCell = CurrentCell;
                        dataGridView3.BeginEdit(true);                        
                        break;
                }
        }
}

private void dataGridView3_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
	TextBox DGV_TextBox = e.Control as TextBox;
        DGV_TextBox.PreviewKeyDown -= new PreviewKeyDownEventHandler(DGV_TextBox_PreviewKeyDown);
        DGV_TextBox.PreviewKeyDown += new PreviewKeyDownEventHandler(DGV_TextBox_PreviewKeyDown);
}

void DGV_TextBox_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
{
	//if (e.KeyCode == Keys.A)
        if (e.KeyCode == Keys.Enter)            
        {
		int CurrentRow = dataGridView3.CurrentCell.RowIndex;
                int CurrentCollumn = dataGridView3.CurrentCell.ColumnIndex;
                switch (CurrentCollumn)
                {
                    case 1:
                        CurrentCollumn = 5;
                        break;
                    case 5:
                        CurrentCollumn = 6;
                        break;
                    case 6:
                        CurrentCollumn = 7;
                        break;
                }
                DataGridViewCell CurrentCell = dataGridView3.Rows[CurrentRow].Cells[CurrentCollumn];
                dataGridView3.CurrentCell = CurrentCell;
                dataGridView3.BeginEdit(true);
        }
}

...
Рейтинг: 0 / 0
DataGridView переключение между ячейкам при нажатии Enter в режиме редактировании
    #39778593
kab19
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Решил проблему использованием делегата и события CellEndEdit:
Код
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
        private void GoToNextCell(DataGridView DGV, int CurrentRow, int CurrentCollumn)
        {
            switch (CurrentCollumn)
            {
                case 1:
                    CurrentCollumn = 5;
                    break;
                case 5:
                    CurrentCollumn = 6;
                    break;
                case 6:
                    CurrentCollumn = 7;
                    break;
            }
            DataGridViewCell CurrentCell = dataGridView3.Rows[CurrentRow].Cells[CurrentCollumn];
            dataGridView3.CurrentCell = CurrentCell;
            dataGridView3.BeginEdit(true);
        }

        private void dataGridView3_CellEndEdit(object sender, DataGridViewCellEventArgs e)
        {
            int CurrentCollumn = dataGridView3.CurrentCell.ColumnIndex;
            if (CurrentCollumn != 7)
            {
                int CurrentRow = dataGridView3.CurrentCell.RowIndex;
                this.BeginInvoke(new MethodInvoker(() =>
                {
                    GoToNextCell(dataGridView3, CurrentRow, CurrentCollumn);
                }));
            }
        }

...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / DataGridView переключение между ячейкам при нажатии Enter в режиме редактировании
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]