Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
1 / 1 / 1
Регистрация: 08.06.2013
Сообщений: 70
1

Фильтрация ввода в DataGridView

09.05.2016, 23:22. Показов 2441. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем здравствуйте.

Возникла проблема с фильтрацией ввода в ячейки DataGridView. Есть два столбца в которых можно вводить данные, в первом столбце(в программе он 3) можно вводить только числа (положительные и отрицательные), во втором только положительные числа. Пробовал делать по аналогии с TextBox'ом, но как-то не получилось, увы.

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
private void DataGridViewLayers_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
        {
            if(DataGridViewLayers.CurrentCell.ColumnIndex == 2)
            {
                TextBox DataGridViewLayersHeight = (TextBox)e.Control;
                RowChangeValue = DataGridViewLayers.CurrentCell.RowIndex;
                DataGridViewLayersHeight.KeyPress += new KeyPressEventHandler(DataGridViewLayersHeight_KeyPress);
            }
            else
            {
                TextBox DataGridViewLayersHNumberOfPoints = (TextBox)e.Control;
                RowChangeValue = DataGridViewLayers.CurrentCell.RowIndex;
                DataGridViewLayersHNumberOfPoints.KeyPress += new KeyPressEventHandler(DataGridViewLayersHNumberOfPoints_KeyPress);
            }
        }
 
        private void DataGridViewLayersHeight_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!Char.IsDigit(e.KeyChar) && e.KeyChar != 8 && (e.KeyChar != 45 || DataGridViewLayers.CurrentCell.Value!=null))
                e.Handled = true;
        }
 
        private void DataGridViewLayersHNumberOfPoints_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!Char.IsDigit(e.KeyChar) && e.KeyChar != 8)
                e.Handled = true;
        }
Если со вторым столбцом я справился, то с первым никак не получается.

Заранее спасибо за помощь!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.05.2016, 23:22
Ответы с готовыми решениями:

Отмена ввода и повтор ввода в DataGridView
Всем привет!!! В DataGridView подключенному к Access провожу следующее действия: добавление и...

Фильтрация в datagridview
У меня есть таблица с двумя столбцами: Name и Value. Chart, Button и ComboBox. Моя задумка:...

Фильтрация DataGridView
Здравствуйте! Столкнулся с задачей и никак не пойму как её сделать. Задача такая: есть datagridview...

Фильтрация DataGridView
Как можно реализовать фильтрацию в данном контроле? Желательно так, чтобы отфильтрованные данные не...

5
8942 / 4854 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
10.05.2016, 00:18 2
Лучший ответ Сообщение было отмечено Artaner как решение

Решение

Не нужно лепить такие костыли. Задай тип данных для столбца (ValueType) и тогда неправильные данные просто не будут приниматься.
Либо писать свой класс для контрола редактирования, наследуясь, скажем, от NumericUpDown.
1
1 / 1 / 1
Регистрация: 08.06.2013
Сообщений: 70
10.05.2016, 09:28  [ТС] 3
Так проблема в том, что две колонки и разные фильтры должны быть. Если поставить ValueType int, то в обеих колонках можно писать отрицательные числа, а мне надо, что бы в одной отрицательные можно было, а в другой положительные.
0
8942 / 4854 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
10.05.2016, 09:40 4
Лучший ответ Сообщение было отмечено Artaner как решение

Решение

uint и ты забудешь про отрицательные числа
1
1 / 1 / 1
Регистрация: 08.06.2013
Сообщений: 70
10.05.2016, 10:01  [ТС] 5
А если нужна еще дополнительная проверка на введенное число? Ну допустим что бы оно было меньше 100? Это надо писать свой класс редактирования или это как-то так же можно просто решить?
0
8942 / 4854 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
10.05.2016, 10:29 6
Лучший ответ Сообщение было отмечено Artaner как решение

Решение

Тогда тебе нужно событие CellValidating
В нём по номеру столбца определяешь принимать или нет введённое значение.
1
10.05.2016, 10:29
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.05.2016, 10:29
Помогаю со студенческими работами здесь

Фильтрация в DataGridView
В DataGridView у меня подключена БД Access. А именно таблица из неё. Подключить запрос из БД не...

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

Фильтрация в DataGridView
Как сделать так чтобы в checkedlistbox ставить галочки и по отмеченных галочкам производилась...

Фильтрация DataGridView
Здравствуйте. Делая курсовую работу столкнулся с проблемой в фильтрации. Создал в навигаторе...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru