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

Поиск максимального элемента в DataGridView

28.10.2017, 14:50. Показов 12065. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте,у меня возникла проблема с поиском максимального элемента в dataGridView.Задание звучит так:"По нажатию на кнопку «Find» в искомом массиве находится максимальный элемент (подсветка) в каждом столбце и их координаты."И плюс к этому я хочу чтобы по нажатию на кнопку "Clean" убиралось выделение с ячеек(через цикл for почему-то не получается,как не пробовал)
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 button5_Click(object sender, EventArgs e)
        {
            int max=0;
            int j = 0;
            int i = 0;
 
 
            for ( i = 0; i < N;i++)
            {
                for (j = 0; j < M; j++)
                {
                    if (((int)dataGridView1[i, j].Value) >= max)
                    {
                        max = (int)dataGridView1[i, j].Value;
                        dataGridView1[i,j].Selected = true;
                      
                       
 
                        
                        label2.Text = max.ToString();
                    }
                    
                }
 
                max = 0;
            }
        }
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.10.2017, 14:50
Ответы с готовыми решениями:

Расчет Максимального значения из элемента Datagridview по определенному столбцу
Вообщем нахожу максимальный элемент следующим способом: Settings.Default.MaxVBike = 0; ...

Поиск заданного элемента в DataGridView
for (int i = 0; i &lt; dataGridView1.RowCount; i++) { for (int j = 0; j &lt; dataGridView1.ColumnCount; j++) ...

Замена максимального элемента
Помогите плиз) Записать (-100) вместо максимального элемента массива D(30) из элементов, расположенных на четных местах. Массив D...

12
 Аватар для Shogun31337
557 / 534 / 225
Регистрация: 02.11.2016
Сообщений: 1,538
28.10.2017, 19:58
Цитата Сообщение от SemyonRT Посмотреть сообщение
По нажатию на кнопку «Find» в искомом массиве находится максимальный элемент (подсветка) в каждом столбце и их координаты.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
        private void button1_Click(object sender, EventArgs e)
        {
            dataGridView1.ClearSelection();
 
            for (int i = 0; i < N; i++)
            {
                DataGridViewCell selectedCell = dataGridView1[i, 0];
                int max = int.Parse(dataGridView1[i, 0].Value.ToString());
                for (int j = 0; j < M; j++)
                {
                    if (int.Parse(dataGridView1[i, j].Value.ToString()) >= max)
                    {
                        max = int.Parse(dataGridView1[i, j].Value.ToString());
                        selectedCell = dataGridView1[i, j];
 
                    }
                }
                selectedCell.Selected = true;
            }
        }
Цитата Сообщение от SemyonRT Посмотреть сообщение
я хочу чтобы по нажатию на кнопку "Clean" убиралось выделение с ячеек
C#
1
2
3
4
        private void button2_Click(object sender, EventArgs e)
        {
            dataGridView1.ClearSelection();
        }
Добавлено через 1 минуту
PS. В свойствах dataGridView1 нужно установить MultiSelect = true
2
0 / 0 / 0
Регистрация: 23.01.2017
Сообщений: 14
28.10.2017, 21:29  [ТС]
Извините за мою наглость,но не могли бы вы подсказать как сделать чтобы ВСЕ максимальные числа выделялись(на скрине во второй колонке две 9,но светиться только 1)(Ну или как заполнить dataGrid случайными НЕповторяющимися числами)
И координаты чисел можно выводить куда-нибудь,или это сложно?
Миниатюры
Поиск максимального элемента в DataGridView  
0
 Аватар для Shogun31337
557 / 534 / 225
Регистрация: 02.11.2016
Сообщений: 1,538
28.10.2017, 21:53
Цитата Сообщение от SemyonRT Посмотреть сообщение
как сделать чтобы ВСЕ максимальные числа выделялись(на скрине во второй колонке две 9,но светиться только 1)
Примерно так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
        private void button1_Click(object sender, EventArgs e)
        {
            dataGridView1.ClearSelection();
 
            for (int i = 0; i < N; i++)
            {
                List<DataGridViewCell> selectedCells = new List<DataGridViewCell>();
                int max = int.Parse(dataGridView1[i, 0].Value.ToString());
                for (int j = 0; j < M; j++)
                {
                    if (int.Parse(dataGridView1[i, j].Value.ToString()) >= max)
                    {
                        max = int.Parse(dataGridView1[i, j].Value.ToString());
                        selectedCells.Add(dataGridView1[i, j]);
                    }
                }
                foreach(DataGridViewCell cell in selectedCells){
                cell.Selected = true;
                }
            }
        }
Не проверял, но должно работать.
Цитата Сообщение от SemyonRT Посмотреть сообщение
И координаты чисел можно выводить куда-нибудь,или это сложно?
В цикле после строки selectedCells.Add(dataGridView1[i, j]); добавьте код, чтобы выводил координаты i и j туда куда Вам нужно. К примеру в текстбокс:
C#
1
tb.AppendText(string.Format("{0}, {1}; ", i, j));
1
0 / 0 / 0
Регистрация: 23.01.2017
Сообщений: 14
28.10.2017, 21:54  [ТС]
Спасибо большое
0
0 / 0 / 0
Регистрация: 23.01.2017
Сообщений: 14
28.10.2017, 22:28  [ТС]
Мне уже правда неловко,но последний вопрос(надеюсь)
Я попробовал добавить вывод координат,но он выводит немного не так как нужно:
1, 1;
1, 2;
2, 1;
2, 2;
2, 3;
3, 1;
3, 2;
3, 3;
,т.е учитывает и предыдущие итерации.Когда я сам пытался сделать выделение та же беда была.Как исправить?
Миниатюры
Поиск максимального элемента в DataGridView  
0
 Аватар для Shogun31337
557 / 534 / 225
Регистрация: 02.11.2016
Сообщений: 1,538
28.10.2017, 22:40
Цитата Сообщение от SemyonRT Посмотреть сообщение
Как исправить?
при нажатии на кнопку очищайте текстбокс.
C#
1
tb.Clear();
0
0 / 0 / 0
Регистрация: 23.01.2017
Сообщений: 14
28.10.2017, 22:52  [ТС]
Так дело же в другом,получается так что в textBox выводятся лишние координаты.А мне нужны координаты только максимальных эл-ов
0
 Аватар для Shogun31337
557 / 534 / 225
Регистрация: 02.11.2016
Сообщений: 1,538
28.10.2017, 22:58
Цитата Сообщение от SemyonRT Посмотреть сообщение
Так дело же в другом,получается так что в textBox выводятся лишние координаты.А мне нужны координаты только максимальных эл-ов
Эмм... Вы куда вставили код добавления координат? Если туда куда нужно, то должны только максимальные выводиться. Вот так должно быть:
C#
1
2
3
4
5
6
                   if (int.Parse(dataGridView1[i, j].Value.ToString()) >= max)
                    {
                        max = int.Parse(dataGridView1[i, j].Value.ToString());
                        selectedCells.Add(dataGridView1[i, j]);
                        tb.AppendText(string.Format("{0}, {1}; ", i, j));
                    }
1
0 / 0 / 0
Регистрация: 23.01.2017
Сообщений: 14
28.10.2017, 23:05  [ТС]
Почти то что нужно,можно только это сделать для самого первого варианта.Второй вариант не рабоатет(но координаты выводит правильно)
Миниатюры
Поиск максимального элемента в DataGridView  
0
 Аватар для Shogun31337
557 / 534 / 225
Регистрация: 02.11.2016
Сообщений: 1,538
28.10.2017, 23:14
Цитата Сообщение от SemyonRT Посмотреть сообщение
Второй вариант не рабоатет(но координаты выводит правильно)
Это и есть второй вариант! Я просто показал куда строку нужно вставить!
1
0 / 0 / 0
Регистрация: 23.01.2017
Сообщений: 14
28.10.2017, 23:19  [ТС]
Вот это работает корректно
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
      private void button1_Click(object sender, EventArgs e)
        {
            dataGridView1.ClearSelection();
 
            for (int i = 0; i < N; i++)
            {
                DataGridViewCell selectedCell = dataGridView1[i, 0];
                int max = int.Parse(dataGridView1[i, 0].Value.ToString());
                for (int j = 0; j < M; j++)
                {
                    if (int.Parse(dataGridView1[i, j].Value.ToString()) >= max)
                    {
                        max = int.Parse(dataGridView1[i, j].Value.ToString());
                        selectedCell = dataGridView1[i, j];
 
                    }
                }
                selectedCell.Selected = true;
            }
        }
А вот это работает криво
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
private void button1_Click(object sender, EventArgs e)
        {
            dataGridView1.ClearSelection();
 
            for (int i = 0; i < N; i++)
            {
                List<DataGridViewCell> selectedCells = new List<DataGridViewCell>();
                int max = int.Parse(dataGridView1[i, 0].Value.ToString());
                for (int j = 0; j < M; j++)
                {
                    if (int.Parse(dataGridView1[i, j].Value.ToString()) >= max)
                    {
                        max = int.Parse(dataGridView1[i, j].Value.ToString());
                        selectedCells.Add(dataGridView1[i, j]);
                    }
                }
                foreach(DataGridViewCell cell in selectedCells){
                cell.Selected = true;
                }
            }
        }
0
 Аватар для Shogun31337
557 / 534 / 225
Регистрация: 02.11.2016
Сообщений: 1,538
28.10.2017, 23:48
Лучший ответ Сообщение было отмечено SemyonRT как решение

Решение

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 button1_Click(object sender, EventArgs e)
        {
            dataGridView1.ClearSelection();
            tb.Clear();
            for (int i = 0; i < N; i++)
            {
                int max = int.Parse(dataGridView1[i, 0].Value.ToString());
                for (int j = 0; j < M; j++)
                {
                    if (int.Parse(dataGridView1[i, j].Value.ToString()) >= max)
                    {
                        max = int.Parse(dataGridView1[i, j].Value.ToString());
                    }
                }
                for (int j = 0; j < M; j++)
                {
                    if (int.Parse(dataGridView1[i, j].Value.ToString()) == max)
                    {
                        dataGridView1[i, j].Selected = true;
                        tb.AppendText(string.Format("{0}, {1};\r\n", i, j));
                    }
                }
            }
        }
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.10.2017, 23:48
Помогаю со студенческими работами здесь

Проблемы с поиском максимального элемента в ArrayList
Доброго времени суток, Форумчане! Есть такая проблема: объявлен словарь protected Dictionary&lt;string, ArrayList&gt;...

Нахождение максимального элемента в int без массивов
Пишу курсовой проект, появилась проблема: Даны k (k&gt;1) натуральных x. Расположить цифры в числах так, чтобы в начале стояла максимальная...

Найти произведение индексов максимального и минимального элемента
Есть класс матрица, есть метод заполнение матрицы из выражения, есть метод где заполняют вектор(одномерный массив) произведением квадратов...

Поиск максимального значения в коллекции
Написал вот такой код: private static float Calc(Node node) { var p = 0f; foreach (var n in node.Linked) ...

Составить метод по нахождению максимального элемента трех массивов
Друзья помогите составить метод по нахождению максимального элемента трех массивов есть вот такой код, но в нем все сделано через...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита, которое может. . .
Команды "Заполнить" и "Очистить" на форме документа
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". На примере нетипового документа разработанного в конфигурации КА2. В качестве источника данных указан регистр накопления, в который записываются данные о. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru