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

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

25.10.2012, 07:21. Показов 2660. Ответов 27
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Прошу помочь - я создаю dataGridView, автоматом заполняю два первых столбца, в третий пользователь должен ввести значения, а в четвертом результаты вычислений, как сделать автоматическое обновление в dgv чтобы пользователь только ввел значения в третьем столбце и сразу же появились результаты в четвертом?

Плюс, у меня есть comboBox в зависимости от выбранного индекса в котором будут разные значения, так же обновлять надо автоматом.

Вот такой код:
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
        private void grid()
        {
 
            dataGridView1.Rows.Clear();
 
            this.dataGridView1.AllowUserToResizeRows = false;
            this.dataGridView1.MultiSelect = false;
            dataGridView1.AllowUserToAddRows = false;
 
            if (comboBox1.SelectedIndex > 1)
            {
                this.dataGridView1.Rows.Add("21,29", "32,56");
            }
 
            else
            {
                this.dataGridView1.Rows.Add("1018,87", "1557,67");
            }
 
            this.dataGridView1.Rows.Add("55,40", "81,88");
            this.dataGridView1.Rows.Add("0", "0");
            this.dataGridView1.Rows.Add("11,28", "14,43");
            this.dataGridView1.Rows.Add("9,93", "12,57");
            this.dataGridView1.Rows.Add("9,93", "12,57");
            this.dataGridView1.Rows.Add("9,93", "12,57");
            this.dataGridView1.Rows.Add("2,28", "2,65");
            this.dataGridView1.Rows.Add("2,40", "0");
            this.dataGridView1.Rows.Add("1,3", "0");
            this.dataGridView1.Rows.Add("2,28", "2,65");
            this.dataGridView1.Rows.Add("48,35", "62,15");
        }
 
 
        private void math()
        {
            int i = 0;
            while (i < 12)
            {
            string heating_2010_string = dataGridView1.Rows[i].Cells[0].Value.ToString();
            double heating_2010 = Convert.ToDouble(heating_2010_string);
 
            string heating_2012_string = dataGridView1.Rows[i].Cells[1].Value.ToString();
            double heating_2012 = Convert.ToDouble(heating_2012_string);
 
            double sum_heating = ((heating_2012) - ((heating_2010) * 115 / 100));
            sum_heating = Math.Round(sum_heating, 2);
            dataGridView1.Rows[i].Cells[3].Value = Convert.ToString(sum_heating);
            i++;
            }
        }
 
        private void calculations_Load(object sender, EventArgs e)
        {
            ControlBox = false;
            comboBox1.SelectedIndex = 6;
            comboBox2.SelectedIndex = 0;
 
            grid();
            grid_header();
            math();
 
        }
Значения из третьего столбца я пока не брал, т.к. нет обновления таблицы
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.10.2012, 07:21
Ответы с готовыми решениями:

Поиск в DGV по мере ввода
Всем привет, подскажите как сделать поиск что бы по мере вода имени в textbox выбиралась строка в datagridviver с похожим именем?

Вывод данных (сортировка) по мере ввода поисковых значений
Добрый день уважаемые форумчане! Прошу вашего совета для решения проблемы следующего характера: Работаю с БД...

Изменение данных в ячейках в зависимости от ввода в диалоговом окне
Добрый день, Имеется файл, в котором часть ячеек неизменны, а часть нужно изменять в зависимости от того, кто открыл файл. При отркытии...

27
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
29.10.2012, 09:51
Студворк — интернет-сервис помощи студентам
na1anya, для получения суммы напиши метод, который будет циклом проходить по всем ячейкам 3-го столбца и суммировать их
0
1 / 1 / 0
Регистрация: 24.09.2012
Сообщений: 44
29.10.2012, 13:30  [ТС]
nio, Я так и сделал:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
        private void math()
        {
            int i = 0;
            double sumi = 0;
            while (i < 12)
            {
                string sumi_string = dataGridView1.Rows[i].Cells[3].Value.ToString();
                double sumi_double = Convert.ToDouble(sumi_string);
                sumi = sumi + sumi_double;
                i++;
            }
            sumi = Math.Round(sumi, 2);
            textBox1.AppendText(Convert.ToString(sumi));
        }
вроде правильно, но где его применить?
0
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
29.10.2012, 13:46
Цитата Сообщение от na1anya Посмотреть сообщение
но где его применить?
в событии изменения значения ячейки

Добавлено через 5 минут
na1anya, в твоем коде много ненужного, переписал немного:
C#
1
2
3
4
5
6
7
8
9
        private void math()
        {
            double sumi = 0;
            foreach(DataGridViewRow r in dataGridView1.Rows)            
                  sumi += Convert.ToDouble(r.Cells[3].Value);           
          
            sumi = Math.Round(sumi, 2);
            textBox1.Text = sumi.ToString();
        }
1
1 / 1 / 0
Регистрация: 24.09.2012
Сообщений: 44
29.10.2012, 13:48  [ТС]
Цитата Сообщение от nio Посмотреть сообщение
в событии изменения значения ячейки
C#
1
string sumi_string = dataGridView1.Rows[i].Cells[3].Value.ToString();
"Ссылка на объект не указывает на экземпляр объекта", хотя вижуал студиа в переменной summi_string показывает правильное значение

Добавлено через 1 минуту
Цитата Сообщение от nio Посмотреть сообщение
в твоем коде много ненужного, переписал немного:
теперь заработало!
0
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
29.10.2012, 13:52
na1anya, ты какую-то фигню делаешь, покажи код всего обработчика события

Добавлено через 1 минуту
... или уже неактуально?
0
1 / 1 / 0
Регистрация: 24.09.2012
Сообщений: 44
29.10.2012, 13:54  [ТС]
nio, после того как ты подкорректировал, все стало отлично! спасибо!
0
1 / 1 / 0
Регистрация: 24.09.2012
Сообщений: 44
30.10.2012, 08:44  [ТС]
nio, CellValueChanged срабатывает только на изменение в dgv, а если мне нужно в одну ячейку(которая тоже участвует в вычислении) вставить значение из базы? каким образом добавить это в обработчик?
Миниатюры
Производить вычисления в ячейках DGV по мере ввода данных  
0
 Аватар для Spectral-Owl
608 / 583 / 157
Регистрация: 29.06.2010
Сообщений: 1,620
30.10.2012, 09:32
Цитата Сообщение от na1anya Посмотреть сообщение
а если мне нужно в одну ячейку(которая тоже участвует в вычислении) вставить значение из базы?
название метода Cell_Value_Changed == "Ячейки_Значение_Изменилось". лично я не совсем понял суть вопроса, т.к. это событие идеально подходит для рассматриваемой ситуации..
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.10.2012, 09:32

Выравнивание текста в ячейках DGV
Просто выводи почему - то зеркально :(=-O

Как работать с CheckBox в ячейках DGV
Хочу сделать что бы при нажатия чекбокса в гриде, менялся цвет ячейки. Все значения (true, false) хранятся в базе данных!

Суммирование значений в ячейках двух полей DGV
Помогите сделать так что бы когда жму на кнопку то из поля Остаток прибавляло число к полю Начислено следующего месяца.

Ссылки в ячейках DGV с переходом на форму с данными выбранной строки
Здравствуйте, такая задача есть таблица1 с полями (Фирма, адрес, телефон и т.д) при нажатие на любую запись из таблицы, открывается...

Перенос данных из одного DGV в другой DGV
Нужно перенести данные из одного dgv в другой(в идеале ещё прибавить к столбцам выбранные значения из текстбокса). DGV-хи находятся на...


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

Или воспользуйтесь поиском по форуму:
28
Ответ Создать тему
Новые блоги и статьи
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru