0 / 0 / 1
Регистрация: 14.03.2012
Сообщений: 9

Сравнить две ячейки DataGridView и изменить их стиль зависимости от введенных данных

26.07.2012, 09:30. Показов 3700. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день! Прошу помочь. Задача состоит в следующем: есть datagridview1 с 10 графами и семью строками. При вводе информации должен быть заложен контроль (например: стр. 01>= стр.02 по всем графам или гр.4>=гр5 по всем строкам и т. д.) и в случае ошибки выдавать текстовое сообщение. Как это можно сделать? Ниже приведен код но оно не правильно работает. Заранее спасибо!!!
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
 private void dataGridView1_CellStateChanged(object sender, DataGridViewCellStateChangedEventArgs e)
        {
 
            string txt;  //переменная для текста выдоваемой ошибки
            int x = 1;
 
                   {
                         try
                {
         
                    if (Convert.ToInt32(dataGridView1.Rows[1].Cells[x].Value) < Convert.ToInt32(dataGridView1.Rows[2].Cells[x].Value))
                    {
                         //Rows[1].Cells[1] - первая строка и первая ячейка
                         //НАПОМНЮ ЧТО У МЕНЯ 10 ГРАФ И 7 СТРОК И ТАК ПИСАТЬ МНЕ КАЖЕТСЯ НЕ ЛОГИЧНО
                        dataGridView1.Rows[1].Cells[1].Style.BackColor = Color.Yellow;  
                        dataGridView1.Rows[2].Cells[1].Style.BackColor = Color.Yellow;
                        txt = "гр.4>=гр.5";
                        MessageBox.Show(txt);
                       
                    }
 
                    if (Convert.ToInt32(dataGridView1.Rows[1].Cells[1].Value) < Convert.ToInt32(dataGridView1.Rows[3].Cells[1].Value))
                    {
                           //Rows[1].Cells[1] - первая строка и первая ячейка
      
                        dataGridView1.Rows[1].Cells[1].Style.BackColor = Color.Yellow; 
                        dataGridView1.Rows[3].Cells[1].Style.BackColor = Color.Yellow;
                        txt = "стр.01>=стр.04";
                        MessageBox.Show(txt);
                    }
 
                }
                catch (Exception)
                {
 
                }
 
 
            }
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.07.2012, 09:30
Ответы с готовыми решениями:

Как изменить цвет шрифта ячейки DataGridView в зависимости от типа данных?
Строки DataGridView содержат данные разных типов. Как задать соответствие между типом данных и цветом? Добавлено через 6 минут То...

Изменить стиль ячейки в DatagridView
Как мне изменить стиль ячейки(НЕ колонки/строки) например: Столбец 1 1 ячейка - BottomRight 2 ячейка - TopCenter 3 ячейка -...

Сравнить две введённых строки без использования strcmp
Помогите пожалуйста. Мне нужно написать программу, в котором нужно сравнить две введённые строки без использования strcmp. Я смог...

5
2 / 2 / 6
Регистрация: 04.05.2012
Сообщений: 62
26.07.2012, 11:34
Если вам нужно поменять текст у всех ячеек при выполнении условия то можно попробовать так:

C#
1
2
3
            for (int i = 0; i < dataGridView1.Rows.Count; i++)
                for (int с = 0; с < dataGridView1.Columns.Count; с++)
                    dataGridView1[с, i].Style.BackColor = Color.Yellow;
1
 Аватар для винс
46 / 46 / 11
Регистрация: 16.03.2012
Сообщений: 199
26.07.2012, 11:59
если нужно сравнить выбранные строки (в моем примере 2 первые - row1, row2) то вот
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
                int row1=0, row2=1;
                bool temp=true;
                for (int i = 0; i < dataGridView1.ColumnCount; i++)
                {
                    if (dataGridView1.Rows[row1].Cells[i].Value.ToString() != dataGridView1.Rows[row2].Cells[i].Value.ToString())
                    {
                        temp = false;
                        break;
                    }
                }
                if (!temp)
                    MessageBox.Show(String.Format("Строка {0} не ровна строке {1}.",row1,row2));
                else
                    MessageBox.Show(String.Format("Строка {0} ровна строке {1}.", row1, row2));
0
0 / 0 / 1
Регистрация: 14.03.2012
Сообщений: 9
26.07.2012, 12:52  [ТС]
Thenks, еще вопрос: а вот сюда можно добавить третью строку для сравнения т.е. стр 01>=стр.02 и стр. 03
C#
1
2
 if (dataGridView1.Rows[row1].Cells[i].Value.ToString() != dataGridView1.Rows[row2].Cells[i].Value.ToString())
                    {
Добавлено через 6 минут
а все нашла, если кому надо то вот так:

C#
1
if ((Convert.ToInt32(dataGridView1.Rows[x].Cells[i].Value) != Convert.ToInt32(dataGridView1.Rows[x1].Cells[i].Value) + Convert.ToInt32(dataGridView1.Rows[x2].Cells[i].Value)))
0
2 / 2 / 6
Регистрация: 04.05.2012
Сообщений: 62
26.07.2012, 12:53
Все И это &&
C#
1
2
3
string roww1= dataGridView1.Rows[row1].Cells[i].Value.ToString(); // чтобы меньше места занимало присваиваю переменной
 
if (roww1 >= dataGridView1.Rows[row2].Cells[i].Value.ToString() && roww1 >= dataGridView1.Rows[row3].Cells[i].Value.ToString())
1
0 / 0 / 1
Регистрация: 14.03.2012
Сообщений: 9
27.07.2012, 14:05  [ТС]
C#
1
2
3
4
if ((Convert.ToInt32(dataGridView1.Rows[1].Cells[i].Value) < 
                        Convert.ToInt32(dataGridView1.Rows[2].Cells[i].Value)
                        || (Convert.ToInt32(dataGridView1.Rows[1].Cells[i].Value))<
                        Convert.ToInt32(dataGridView1.Rows[3].Cells[i].Value)))
Добавлено через 23 часа 44 минуты
Добрый день всем!!! Еще такой вопрос, а как вернуть исходный свет ячейки после исправление ошибки, а то оно у меня остается как ошибочный.
C#
1
dataGridView1.Rows[j].Cells[4].Style.BackColor = Color.OrangeRed;
Добавлено через 54 минуты
C#
1
2
3
4
5
6
 for (int i = 1; i < dataGridView1.ColumnCount; i++)   
            {
                    //здесь показано условие что гр.4>=гр.5 по всем строкам 
                    //Rows[j] - строка, Cells[4] - графа четыри или 4-я COLUMN, Cells[5] - графа 5 или 5-я COLUMN
                     dataGridView1.Rows[j].Cells[i].Style.BackColor = Color.White;
                     dataGridView1.Rows[j].Cells[i].Style.BackColor = Color.White;
Добавлено через 1 минуту
нашла, если кому надо
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
 for (int i = 1; i < dataGridView1.ColumnCount; i++)   
            {
                     dataGridView1.Rows[j].Cells[i].Style.BackColor = Color.White;
                     dataGridView1.Rows[j].Cells[i].Style.BackColor = Color.White;
if (Convert.ToInt32(dataGridView1.Rows[j].Cells[4].Value) < Convert.ToInt32(dataGridView1.Rows[j].Cells[5].Value))
                    {
                       
                        dataGridView1.Rows[j].Cells[4].Style.BackColor = Color.OrangeRed; 
                        dataGridView1.Rows[j].Cells[5].Style.BackColor = Color.OrangeRed;
                        txt = "гр.4>=гр.5";  
                        MessageBox.Show(txt); 
                        break;
                    }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.07.2012, 14:05
Помогаю со студенческими работами здесь

Изменить стиль объекта в зависимости от условия в БД
Привет, помогите с задачей. Гору всякого понаписал, ничего не помогло. Задача думаю не сложная для вас. Есть таблица 1 id ...

Изменить стиль строки таблицы в зависимости от наличия контента в ячейке
Добрый день! Честно пытался сперва нагуглить ответ на свой вопрос. Суть заключается в том, чтобы изменить стиль строки таблицы html в...

Изменить стиль заголовка столбца DataGridView
Всем здрасти. Мне нужно изменить цвет заголовка одной из колонок, сначала ничего не получалось, пока не сделал следущее ...

Сравнить значение ячейки DataGridView со значением в TextBox
Доброе время суток. Подскажите пожалуйста как мне сделать. У меня есть значения в textdox и мне нужно проверить, если это значения...

Как изменить стиль ссылок в зависимости от того, какой контроллер запущен
Имеется сайт на Codeigniter'е. В качестве стилей используется Bootstrap. Если Вы знаете то в предложенном меню от Bootstrap'a есть...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

Новые блоги и статьи
sshd restrictions, ssh access limitations
jigi33 26.03.2025
sshd restrictions | ssh access limitations рестрикции доступа на сервер sshd статья: https:/ / www. golinuxcloud. com/ restrict-allow-ssh-certain-users-groups-rhel
Компиляция C++ с Clang API
NullReferenced 24.03.2025
Компиляторы обычно воспринимаются как черные ящики, которые превращают исходный код в исполняемые файлы. Мы запускаем компилятор командой в терминале, и вуаля — получаем бинарник. Но что если нужно. . .
Многопоточное программировани­е в C#: Класс Thread
UnmanagedCoder 24.03.2025
Когда запускается приложение на компьютере, операционная система создаёт для него процесс - виртуальное адресное пространство. В C# этот процесс изначально получает один поток выполнения — главный. . .
SwiftUI Data Flow: Передача данных между представлениями
mobDevWorks 23.03.2025
При первом знакомстве со SwiftUI кажется, что фреймворк предлагает избыточное количество механизмов для передачи данных: @State, @Binding, @StateObject, @ObservedObject, @EnvironmentObject и другие. . . .
Моки в Java: Сравниваем Mockito, EasyMock, JMockit
Javaican 23.03.2025
Как протестировать класс, который зависит от других сложных компонентов, таких как базы данных, веб-сервисы или другие классы, с которыми и так непросто работать в тестовом окружении? Для этого и. . .
Архитектурные паттерны микросервисов: ТОП-10 шаблонов
ArchitectMsa 22.03.2025
Популярность микросервисной архитектуры объясняется множеством важных преимуществ. К примеру, она позволяет командам разработчиков работать независимо друг от друга, используя различные технологии и. . .
Оптимизация рендеринга в Unity: Сортировка миллиона спрайтов
GameUnited 22.03.2025
Помните, когда наличие сотни спрайтов в игре приводило к существенному падению производительности? Время таких ограничений уходит в прошлое. Сегодня геймдев сталкивается с задачами совершенно иного. . .
Образование и практика
Igor3D 21.03.2025
Добрый день А вот каково качество/ эффективность ВУЗовского образования? Аналитическая геометрия изучается в первом семестре и считается довольно легким курсом, что вполне справедливо. Ну хорошо,. . .
Lazarus. Таблица с объединением ячеек.
Massaraksh7 21.03.2025
Понадобилась представление на экране таблицы с объединёнными ячейками. И не одной, а штук триста, и все разные. На Delphi я использовал для этих целей TStringGrid, и то, кривовато получалось. А в. . .
Async/await в Swift: Асинхронное программировани­е в iOS
mobDevWorks 20.03.2025
Асинхронное программирование долго было одной из самых сложных задач для разработчиков iOS. В течение многих лет мы сражались с замыканиями, диспетчеризацией очередей и обратными вызовами, чтобы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru