Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 24.10.2019
Сообщений: 30

DataGridView Как не переводить фокус на следующую ячеку при ошибке ввода

01.12.2020, 18:53. Показов 624. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть таблица в DataGridView и метод который по нажатию кнопки Enter переводит фокус на следующую ячейку в строке для дальнейшего ввода значений. Если в ячейку где нужно например ввести цифры, а пользователь ввел буквы, то ему после нажатия Enter показывает ошибку и он должен исправить неправильное значение, но фокус в это время уже переведен на следующее поле и пользователю прийдется вручную вернуться обратно. И собственно вопрос: как реализовать метод перевода фокуса так, что бы он учитывал ошибки ввода и в сучае их возникновения оставлял фокус в ячейке где произошла ошибка?
Метод который я использовал для перевода фокуса:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
protected override bool ProcessCmdKey(ref Message msg, Keys keyData) //перевод фокуса по нажатию Enter
        {
            bool baseResult = base.ProcessCmdKey(ref msg, keyData);
 
            if (keyData == Keys.Enter)
            {
                int iColumn = Vedomist.CurrentCell.ColumnIndex;
                int iRow = Vedomist.CurrentCell.RowIndex;
                if (iColumn == Vedomist.ColumnCount - 1)
                {
                    if (Vedomist.RowCount > (iRow + 1))
                    {
                        Vedomist.Rows.Add(row);
                        Vedomist.CurrentCell = Vedomist[1, iRow + 1];
                    }
                }
                else
                    Vedomist.CurrentCell = Vedomist[iColumn + 1, iRow];
                return true;
            }
            return baseResult;
        }
И методы для отлова ошибок выглядят все приблезительно так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
private void Vedomist_CellValueChanged(object sender, DataGridViewCellEventArgs e) //проверка ввода
        {
            try 
            { 
                Class1.Check2(Vedomist); 
            }
            catch (FormatException)
            {
                Vedomist[2, e.RowIndex].Value = null;                
                MessageBox.Show("Вы ввели символ. Введіть число", "Помилка", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }          
            Class1.Get_Sum(Vedomist, dataGridView1, number);
        }
C#
1
2
3
4
5
6
7
8
9
10
11
public static void Check2(DataGridView Vedomist) //проверка на ввод букв вместо цифр
        {
            double perevirka = 0;
            for (int i = 0; i < Vedomist.Rows.Count; i++)
            {
                if (Vedomist[2, i].Value != null)
                {
                    perevirka += ToDouble(Vedomist[2, i].Value);
                }
            }
        }
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.12.2020, 18:53
Ответы с готовыми решениями:

Не переводить фокус на следующий EditText при нажатии enter
Если имеется несколько EditText, то при нажатии enter экранной клавиатуры фокус переходит на следующий editText. Нужно, чтобы при нажатии...

Нажатие на ячеку DataGridView, загрузка второго DataGridView по внешнему ключу
не могу понять как реализовать загрузку датагрида по внешнему ключу,не подскажите?

StringGrid: по нажатию энтер переводить фокус в соседнюю ячейку справа
здраствуйте. ну впринципе из заголовка по моему уже ясно что я хочу. Добавлено через 19 минут стринггрид по нажатию энтер фокус...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
01.12.2020, 18:53
Помогаю со студенческими работами здесь

Заменить вводимый пользователем в ячеку DataGridView символ на другой
Конкретный пример того что хотелось бы сделать: пользователь вводит число пытаясь поставить десятичный разделитель &lt;точку&gt;, а...

Повторный запрос ввода при ошибке
При вводе не верного числа все норм, при вводе символа - выводится &quot;Вы ошиблись.&quot; и не запрашивается второй раз ввод. ...

При выборе узла дерева не снимать выделение с дерева, а переводить курсор в datagridview
на форме treeview(слева)datagridview(справа).мне надо чтобы при выборе узла дерева выделение с дерева не снималось а курсор переходил бы в...

HTML!? Есть поле ввода Type text, после ввода текста и нажатия entrer теряется фокус, как его оставить в этом же поле?
HTML!? Есть поле ввода Type text, после ввода текста и нажатия entrer теряется фокус, как его оставить в этом же поле?

Отмена перехода на следующую строку при нажатии Enter в DataGridView
Здравствуйте! При нажатии Enter в DataGridView происходит переход на следующую строку. Подскажите, пожалуйста, как это можно отменить?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru