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

Перемножение групп значений NumericUpDown

30.04.2017, 10:35. Показов 1351. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет!
Подскажите, как можно упростить написание кода для перемножения нескольких значений NumericUpDown и вывода результата в TextBox?
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
private void button1_Click(object sender, EventArgs e)
        {
            decimal B1, X1, BX1;
            B1 = (decimal)numericUpDown1.Value;
            X1 = (decimal)numericUpDown2.Value;
            BX1 = B1*X1;
            textBox1.Text = Convert.ToString(BX1);
 
            decimal B2, X2, BX2;
            B2 = (decimal)numericUpDown3.Value;
            X2 = (decimal)numericUpDown4.Value;
            BX2 = B2 * X2;
            textBox2.Text = Convert.ToString(BX2);
            //и т.д., около 20ти textBox'ов
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.04.2017, 10:35
Ответы с готовыми решениями:

Очистка значений numericupdown
Всем привет...Завис с такой проблемой- КАК очистить значения numeric up down при переключении комбика. :-| есть комбик- в нем 2...

Запись рандомных значений в NumericUpDown по таймеру
Здравствуйте, подскажите пожалуйста, у меня такая проблема: у меня есть несколько numericUpDown, мне нужно чтобы у меня записывались в них...

Передача значения из одной формы в другую. Перемножение значений TextBox
Приветствую вас форумчане! Прошу помочь мне, новичку в моей проблемке Есть две формы, результат значение из первой формы, при нажатии на...

17
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18278 / 14201 / 5368
Регистрация: 17.03.2014
Сообщений: 28,881
Записей в блоге: 1
01.05.2017, 16:17
Moonmoth, объявляем в форме поля
C#
1
2
NumericUpDown[] _numerics;
TextBox[] _textBoxes;
В конструкторе добавляем следующий код (после вызова InitializeComponent())
C#
1
2
3
4
5
6
7
8
9
_numerics = new[] {
    numericUpDown1, numericUpDown2
    numericUpDown3, numericUpDown4
    numericUpDown5, numericUpDown6
    numericUpDown7, numericUpDown8
    ...
};
 
_textBoxes = new[] { textBox1, textBox2, textBox3, textBox4, ... };
И наконец метод button1_Click
C#
1
2
3
4
5
6
7
private void button1_Click(object sender, EventArgs e)
{
    for (int i=0; i<_numerics.Length; i+=2)
    {
        _textBoxes[i/2].Text = (_numerics[i].Value * _numerics[i+1].Value).ToString();
    }
}
Если на форме нет других элементов управоения textBox и numericUpDown и они добавлены по порядку на форму, то код конструктора можно упростить:
C#
1
2
_numerics = Controls.OfType<NumericUpDown>().ToArray();
_textBoxes = Controls.OfType<TextBox>().ToArray();
1
0 / 0 / 0
Регистрация: 30.04.2017
Сообщений: 20
02.05.2017, 15:18  [ТС]
OwenGlendower, Спасибо! Решение помогло.
Было бы хорошо еще придумать, как занести в массив определенные TexBox'ы, например, с 10 по 50.
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18278 / 14201 / 5368
Регистрация: 17.03.2014
Сообщений: 28,881
Записей в блоге: 1
02.05.2017, 15:42
Moonmoth, например так:
C#
1
2
3
4
5
_textboxes = new TextBox[50-40+1];
for (int i=10; i<=50; i++)
{
    _textboxes[i-10] = (TextBox)Controls["textBox" + i];
}
0
0 / 0 / 0
Регистрация: 30.04.2017
Сообщений: 20
03.05.2017, 15:38  [ТС]
А что в данном примере обозначает
Цитата Сообщение от OwenGlendower Посмотреть сообщение
new TextBox[50-40+1]
? В квадратных скобках я ведь указываю размерность массива?
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18278 / 14201 / 5368
Регистрация: 17.03.2014
Сообщений: 28,881
Записей в блоге: 1
03.05.2017, 15:40
Moonmoth, размерность и означает. Просто для удобства восприятия она записана в виде вычисления.
0
0 / 0 / 0
Регистрация: 30.04.2017
Сообщений: 20
03.05.2017, 16:16  [ТС]
OwenGlendower, ну да, только в моём случае размерность равна 50-10+1=41. Но суть понял.
Попробовал применить этот код, появляется ошибка "Необработанное исключение типа "System.NullReferenceException"". А все элементы массива _textboxes равны null.
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18278 / 14201 / 5368
Регистрация: 17.03.2014
Сообщений: 28,881
Записей в блоге: 1
03.05.2017, 16:21
Moonmoth, с числом ошибся, да. Насчет NullReferenceException - textBox-ы находятся видимо не на форме, а внутри другого контейнера. Если это так, то используй его коллекцию Controls.
0
0 / 0 / 0
Регистрация: 30.04.2017
Сообщений: 20
03.05.2017, 17:09  [ТС]
OwenGlendower, textBox-ы находятся внутри разных GroupBox-ов, которые располагаются внутри одного TabPage, который является частью TabControl. И как мне быть?
Такие строчки не проходят:
C#
1
2
_textBoxes[i - 101] = (TextBox)tabPage1.Controls["textBox" + i];
_textBoxes[i - 101] = (TextBox)tabControl1.Controls["textBox" + i];
А GroupBox-ов много.
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18278 / 14201 / 5368
Регистрация: 17.03.2014
Сообщений: 28,881
Записей в блоге: 1
03.05.2017, 17:24
Moonmoth, используй метод Find
C#
1
_textBoxes[i - 101] = (TextBox)Controls.Find("textBox" + i, true);
1
0 / 0 / 0
Регистрация: 30.04.2017
Сообщений: 20
03.05.2017, 17:53  [ТС]
OwenGlendower, выходит ошибка. "Не удается преобразовать тип "System.Windows.Forms.Control[]" в "System.Windows.Forms.TextBox""
0
 Аватар для ViterAlex
8951 / 4863 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
03.05.2017, 18:57
C#
1
_textBoxes[i - 101] = (TextBox)Controls.Find("textBox" + i, true)[0];
Но если не найдёт — будет ошибка
1
0 / 0 / 0
Регистрация: 30.04.2017
Сообщений: 20
04.05.2017, 08:14  [ТС]
ViterAlex, Ошибка, теперь уже другая: "Необработанное исключение типа "System.IndexOutOfRangeException". Дополнительные сведения: Индекс находился вне границ массива".
Пробовал вместо "0" также подставлять другие числа, или "i" - без изменений.
0
 Аватар для ViterAlex
8951 / 4863 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
04.05.2017, 08:23
Цитата Сообщение от Moonmoth Посмотреть сообщение
Ошибка, теперь уже другая:
потому что я говорил
Цитата Сообщение от ViterAlex Посмотреть сообщение
Но если не найдёт — будет ошибка
Поэтому нужно проверять, что метод Find возвращает не пустой массив
C#
1
2
3
4
5
6
7
var controls = Controls.Find("textBox" + i, true);
if(controls.Lenght > 0)
    _textBoxes[i - 101] = (TextBox)controls[0];
else
{
    //ничего не найдено.
}
А вообще ты идёшь "тернистым путём греха". Не нужно искать контролы по имени, нужно перестроить архитектуру приложения.
Объясни какую задачу ты решаешь и мы попробуем её решить без поиска контролов по имени.
0
0 / 0 / 0
Регистрация: 30.04.2017
Сообщений: 20
04.05.2017, 08:23  [ТС]
Разобрался, это у меня была ошибка. Всё действительно работает.
Только не совсем понимаю, что здесь обозначает индекс [0] в конце строчки
Цитата Сообщение от ViterAlex Посмотреть сообщение
_textBoxes[i - 101] = (TextBox)Controls.Find("textBox" + i, true)[0];
0
 Аватар для ViterAlex
8951 / 4863 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
04.05.2017, 08:26
Цитата Сообщение от Moonmoth Посмотреть сообщение
что здесь обозначает индекс [0] в конце строчки
Если бы ты зашёл в справку и почитал о методе Find, то увидел бы, что он возвращает массив контролов. Из которого мы берём первый элемент и приводим его к TextBox
0
0 / 0 / 0
Регистрация: 30.04.2017
Сообщений: 20
04.05.2017, 08:51  [ТС]
Цитата Сообщение от ViterAlex Посмотреть сообщение
Из которого мы берём первый элемент и приводим его к TextBox
В общих чертах понял, спасибо.
Цитата Сообщение от ViterAlex Посмотреть сообщение
Объясни какую задачу ты решаешь
А задача была создать форму с несколькими label (около 20), описывающими характеристики, с возможностью задать каждой коэффициент и оценку (сделал это через NumericUpDown) и вывести их произведение (в TextBox).
0
 Аватар для ViterAlex
8951 / 4863 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
04.05.2017, 11:11
Цитата Сообщение от Moonmoth Посмотреть сообщение
задача была создать форму с несколькими label
Это не задача. Это твоё представление о внешнем виде программы. решающей твою задачу, о которой ты нам не говоришь.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.05.2017, 11:11
Помогаю со студенческими работами здесь

NumericUpDown, как избавиться от некоторых значений
Пользователь при помощи NumericUpDown должен выбрать нужный элемент например с 5 до 15. Но он не может выбирать например: 6, 7, 9, 11, 13,...

Перемножение значений из TextBox-ов
Такая проблема: нужно чтоб числа вводимые в textbox1 и textbox2 умножались и выводились в textbox3 пробовал...

Перемножение двух значений
Добрый день! Помогите пожалуйста: На форме есть поле1, значение в которое вносятся через маску ввода &quot;___х___&quot; , т.е....

Перемножение значений и матрицы
Здравствуйте, запуталась, &quot;читаю&quot; изображение, получается матрица, как теперь каждое значение из этой матрицы перемножить на РАЗЛИЧНЫЕ...

Перемножение 2х значений и вывод результат
Помогите перемножить значения zak_kol и sum_norma. не могу разобраться как делать это. и вывести результат &lt;meta...


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru