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

DataGridView. Неправильное срабатывание функции ограничения ввода символов

10.11.2017, 15:36. Показов 703. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день. У меня есть DataGridView. Т.к. у меня есть один столбец числовой, а другой содержит даты, то я хотел ограничить ввод символом в определенные столбцы. Прочитал многочисленные похожие темы на этом форуме сделал это так:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
    switch (((DataGridView)sender).CurrentCell.ColumnIndex)
    {
        case 1:
            e.Control.KeyPress -= new KeyPressEventHandler(Control_NumberPress);
            e.Control.KeyPress += new KeyPressEventHandler(Control_NumberPress);
            break;
        case 7:
            e.Control.KeyPress -= new KeyPressEventHandler(Control_DatePress);
            e.Control.KeyPress += new KeyPressEventHandler(Control_DatePress);
            break;
    }
}
C#
1
2
3
4
5
6
7
8
// Функция контроля ввода символов (разрешены цифры и Backspace)
void Control_NumberPress(object sender, KeyPressEventArgs e)
{
    if (e.KeyChar != 8) 
        e.Handled = !Char.IsDigit(e.KeyChar);
    else
        cellEdit = false;
}
C#
1
2
3
4
5
6
7
8
//Функция контроля ввода символов (разрешены цифры, точка и Backspace)
void Control_DataPress(object sender, KeyPressEventArgs e)
{
    if ((e.KeyChar != 8) && (e.KeyChar != 46))
        e.Handled = !Char.IsDigit(e.KeyChar);
    else
        cellEdit = false;
}
Но столкнулся с проблемой, что если даже я не ввожу текст в столбец №7, то функция Control_NumberPress применяется ко всем столбцам, а не только к тому, к которому я хочу. Более того, если я сначала ввожу значение в столбец №1, затем в столбец №7, то срабатывают сразу обе функции в таком порядке:
1. Control_DataPress
2. Control_NumberPress
Что подразумевает собой невозможность ввода точки в ячейку с датой (столбец №7), т.к. последняя функция Control_NumberPress это запрещает. Подскажите, пожалуйста, как справиться с этой проблемой? Или может быть есть другой вариант решения данной задачи.

Добавлено через 3 часа 12 минут
На другом форуме уже подсказали решение. Вот правильный вариант:
C#
1
2
3
4
5
6
7
8
9
10
11
12
TextBox tb = (TextBox)e.Control;
tb.KeyPress -= Control_DatePress;
tb.KeyPress -= Control_NumberPress;
switch (((DataGridView)sender).CurrentCell.ColumnIndex)
{
    case 1:
        tb.KeyPress += new KeyPressEventHandler(this.Control_NumberPress);
        break;
    case 7:
        tb.KeyPress += new KeyPressEventHandler(this.Control_DatePress);
        break;
}
Просто неправильно делал вычитание
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.11.2017, 15:36
Ответы с готовыми решениями:

Ограничение ввода символов в DataGridView
Доброго времени суток! Может кто знает как ограничить ввод символов в DataGridView в определённом столбце. Мне нужно чтобы в одном столбце...

DataGridView блокировка ввода символов
Подскажите, как ограничить количество символов, которые можно ввести в ячейку

Запрет ввода определенных символов в dataGridView
У меня есть таблица. Хочу чтобы кроме цифр и запятой вводить в ячейки ничего нельзя было. Кто подскажет. Обычными обработчиками...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.11.2017, 15:36
Помогаю со студенческими работами здесь

Ограничение ввода в dataGridView (ввод только символов в определенном столбце)
Всем доброго времени суток и спасибо за то что заглянули сюда. Проблема следующая - есть столбец (нулевой) с Ф.И.О., необходимо чтобы при...

Как ограничить число символов для ввода в ячейки столбца DataGridView?
У меня вопросы по этому элементу. 1) Как ограничить число символов для ввода в колонке? Я нашёл свойство MaxInputLength в отдельном...

Ограничения ввода в DataGridView
Необходимо, чтобы при редактировании (или вводе) значений в ячейках DataGridView, имеющих определённую маску ("00.00.0000")...

Запрет ввода в ячейки DataGridView символов кроме цифр и ","
Добрый день, коллеги! Есть DataGridView1. есть запрет редактирования столбцов: Private Sub DataGridView1_CellBeginEdit(sender As...

Ограничения ввода в строках
Заимствовал код, появился вопрос как реализовать ограничения слова в 5 символов и именно латинскими бувами Сам кодprogram stroki; ...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Переходник 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
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru