Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
95 / 15 / 3
Регистрация: 09.07.2009
Сообщений: 886

Контроль ввода данных в DataGridView

11.05.2013, 15:45. Показов 2279. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Хотелось бы сделать следующее:
1. Запретить непосредственный ввод данных в поле даты и разрешить ввод данных только из календаря
2. Проверить значении, вводимое в числовое поле, и заменить системное сообщение об ошибке своим сообщением.
Подскажите, пожалуйста, как это сделать. Я пытался по пункту 2 сделать так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
private void dgv1_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
{
  if (e.ColumnIndex == 3 && dgv1.CurrentCell.Value.ToString() != "")
  {
    int num;
    Boolean bl = int.TryParse(dgv1.CurrentCell.Value.ToString(), out num);
    if (bl == false)
    {
      MessageBox.Show("Введенные данные не соответствуют формату числа!", "Программа для изучения C#", MessageBoxButtons.OK);
    }
  }
}
но получается ерунда: если вводить в числовое поле числа - то все нормально работает, а если вводить строки, то появляется системное сообщение.
Если e.ColumnIndex == 3 && dgv1.CurrentCell.Value.ToString() != "" заменить на e.ColumnIndex == 3, то при первом же щелчке на поле появляется мое сообщение об ошибке, поскольку значение ячейки пустое. Проект прикрепляю
Вложения
Тип файла: zip AdoNetControlEnter.zip (31.1 Кб, 10 просмотров)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.05.2013, 15:45
Ответы с готовыми решениями:

Формат и контроль ввода данных в столбце DataGridView
Доброго времени суток! В DataGridView имеется несколько столбцов с текстовыми данными и один с числовыми, как можно организовать...

Реализовать контроль ошибок ввода данных в поле, предназначенное для ввода времени
5.Реализовать в JavaScript контроль ошибок ввода данных в поле, предназначенное для ввода времени.

Реализовать контроль ошибок ввода данных в поле, предназначенное для ввода пароля
4.Реализовать в JavaScript контроль ошибок ввода данных в поле, предназначенное для ввода пароля.

3
 Аватар для AlexAsche
78 / 78 / 15
Регистрация: 27.01.2013
Сообщений: 323
11.05.2013, 17:56
По 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
private void dgv1_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.ColumnIndex == 2 && dgv1.CurrentCell.Value.ToString() == "")
            {
                Rectangle curcell = dgv1.GetCellDisplayRectangle(e.ColumnIndex, e.RowIndex, true);
                Point p = new Point(curcell.Right, curcell.Bottom);
                mc.Location = p;
                mc.Visible = true;
                mc.Show();
                dgv1.Enabled = false;//пока в календаре ничего не выбрано доступа нет
            }
            else
            {
                mc.Visible = false;
            }
        }
 
        private void mc_DateSelected(object sender, DateRangeEventArgs e)
        {
            dgv1.CurrentCell.Value = e.Start;
            mc.Visible = false;
            dgv1.Enabled = true; 
 
        }
А по 2:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
private void dgv1_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
        {
            int num;
            if (e.ColumnIndex == 3 && !int.TryParse(e.FormattedValue.ToString(),
                out num))
            {
                e.Cancel = true;
                dgv1.Rows[e.RowIndex].ErrorText = "Введенные данные не соответствуют формату числа";
                MessageBox.Show("Введенные данные не соответствуют формату числа!", "Программа для изучения C#", MessageBoxButtons.OK);
            }
            else dgv1.Rows[e.RowIndex].ErrorText = null;
 
        }
1
54 / 54 / 23
Регистрация: 02.09.2009
Сообщений: 285
11.05.2013, 18:02
Для второго пункта надо использовать новое значение смотреть через e.FormattedVlue
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
 private void dgv1_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
    {
        if (e.ColumnIndex == 3 && e.FormattedValue.ToString() != String.Empty)
        {
            int num;
            Boolean bl = int.TryParse(e.FormattedValue.ToString(), out num);
            if (bl == false)
            {
                MessageBox.Show("Input does not correspond to the number format!", "ADO.NET Study", MessageBoxButtons.OK);
                e.Cancel = true;
            }
        }
    }
1
95 / 15 / 3
Регистрация: 09.07.2009
Сообщений: 886
11.05.2013, 19:50  [ТС]
Вариант по п. 1 работает. Попробовал 2 варианта по 2 пункту. Оба варианта работают. Спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.05.2013, 19:50
Помогаю со студенческими работами здесь

Реализовать контроль ошибок ввода данных в поле, предназначенное для ввода номера телефона
1.Реализовать в JavaScript контроль ошибок ввода данных в поле, предназначенное для ввода номера телефона.

Контроль Ввода Данных
Подскажите пожалуйста как мне сделать так что бы при вводе данных программа не давала вводить не какие символы кроме (1,-1,2)?

Контроль ввода данных
как в паскале указать чтоб можно было использовать только цифры и только определённые цифры? Например программа, появляется меню и там...

Контроль ввода данных
Здравствуйте. Меня мучает такое вопрос есть переменная i:integer как через if можно сделать так, что если человек введет какую - нибудь...

Контроль ввода данных
Такой простенький код. Как можно сделать так, чтобы при вводе букв или символов для одной из переменных - программа не вылетала?Спасибо! ...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru