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

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

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

Студворк — интернет-сервис помощи студентам
Добрый день! Прошу помочь. Задача состоит в следующем: есть 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
Ответ Создать тему
Новые блоги и статьи
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru