C # – Как мне отдельно вернуть значения int из каждого радиогруппы GroupBox?

Позвольте мне уточнить мою ситуацию и подход.

У меня есть файл excel с 10 столбцами. Первые пять столбцов имеют данные, которые формируют условия для запроса, в то время как последние пять столбцов содержат данные, которые формируют результат.

Я пытаюсь сделать программное обеспечение с этими данными в базе данных или excel (если база данных сложна), где первые пять столбцов будут связаны с списком или меню или в настоящее время RadioButtons в пяти разных группах. Когда будут сделаны выборы и нажата кнопка SUBMIT, результат будет отображаться в виде пяти данных из соответствующих строк в excel или базе данных.

Это то, чего я пытаюсь достичь.

Прокомментируйте, если мой подход неверен. Заранее благодарю всех постов.

————————– Оригинальный вопрос ———————- ——

У меня 5 групповых ящиков (1 имеет 5 радиокнопками, 2 имеет 3, 3 и 4 имеет 11, а 5 – 4) в WPF. На основании того, какой радиобудильник выбран из каждой группыBox, ожидается, что программное обеспечение выдаст четыре параметра (из CSV или базы данных)

Я использовал Как мне установить , какой переключатель установлен в групповом ящике? код от этого, данный королем королем, и модифицировал его для использования в моих целях.

var checkedRadio = new []{groupBox1, groupBox2, groupBox3, groupBox4, groupBox5}.SelectMany(g=>g.Controls.OfType<RadioButton>().Where(r=>r.Checked)); foreach(var c in checkedRadio) MessageBox.Show(c.Name); 

То, что это дает мне, – это радиообъекты, которые выбираются один за другим как окно сообщений.

Я хочу поблагодарить короля Кинга и многих других (более 20), ответы на которые отвечали за ответы.

Где я застрял, как использовать цикл foreach для присвоения значений пяти отдельным int, а затем использовать его для вычисления конечной величины int, которую я могу назначить для различных результатов, которые я хочу отобразить.

Я попытался назначить значения int в каждом обработчике событий CheckedChanged, но все они являются частными и не возвращают ничего. Я попытался изменить их, чтобы вернуть ints, но я не могу, похоже, взломать этот орех.

Я уверен, что весь мой подход может быть неправильным, но я не очень понимаю в этом.

// В основном я хочу указать параметры в g = пять групп и на основе выбора из этих пяти групп (столбцы в excel) отображать результаты из 4 соответствующих столбцов в соответствующей строке в базе данных. Мой нынешний подход выше – обходной путь, так как я не знаю, как работать с базами данных .//

Я думаю, вам следует опустить присвоение значений пяти разделенным int s, но вычислить полученное значение. Например, давайте groupBox s по битам и вычислим битовую маску

  groupBox1 - 00001 (let it be checked) groupBox2 - 00010 groupBox3 - 00100 (let it be checked) groupBox4 - 01000 (let it be checked) groupBox5 - 10000 ----------------- mask 01101 (13) 

поэтому, если groupBox1 , groupBox3 и groupBox4 , последняя маска будет равна 01101

 var result = new [] {groupBox1, groupBox2, groupBox3, groupBox4, groupBox5} .Select((box, index) => new { box = box, mask = 1 << index }) .Where(item => item.box.Controls .OfType<RadioButton>() .Any(button => button.Checked)) .Sum(item => item.mask); 

В случае, если вы должны использовать произвольные веса, организуйте их в коллекцию, например, массив

  double[] weights = new double[] {1.2, 3.58, 4.62, -1.7, 0.9}; double result = new [] {groupBox1, groupBox2, groupBox3, groupBox4, groupBox5} .Select((box, index) => new { box = box, weight = weights[index] } .Where(item => item.box.Controls .OfType<RadioButton>() .Any(button => button.Checked)) .Sum(item => item.weight); 

Руководящий принцип остается неизменным: не используйте разделенные значения : поскольку у вас есть коллекция для элементов управления (groupboxes), поместите соответствующие значения в коллекцию

Извините, но это уродливо, имея отдельные коллекции. Вы должны либо сделать пользовательский элемент управления на основе флажка, который имеет int, либо использовать тег элемента управления. У вас может быть поле группы как элемент управления, который абстрагирует вычисления в форме, но это будет зависеть от того, что вы делаете с ними.

 public class MyClass : CheckBox { public int MyValue { get; set; } public MyClass() { } } 

Или просто используйте:

 value = (int)myCheckBox.Tag; 
  • Включить файл excel в каталог проекта wpf c #
  • Могу ли я скомпилировать файл excel в C # WPF-программе и использовать его в коде?
  • странные знаки в Documentviewer WPF
  • AutoSize ElementHost в Excel 2003 ActionsPane
  • VSTO Excel Add-In - проблема с WPF XAML Style
  • Внедрение нескольких таблиц Excel в форме на основе запроса, содержащего пути к файлам
  • Экспорт в Excel без офиса MS, установленного для продукта Wpf
  • Закрытие листов Microsoft Excel в visual studio c #
  • Как установить размер окна Excel?
  • WPF ComboBox не остается открытым при использовании в области задач
  • Чтение содержимого файла excel в приложении wpf
  • Interesting Posts

    Как сгенерировать XML из макроса Excel VBA?

    Вычислить период оплаты Biweekly в Excel 2010

    Поиск соответствующих данных и копирование на другой лист (Formula или VBA)

    Excel 2016: ошибка функции FLOOR.MATH в сочетании с MAX

    2010 Excel VBA, как определить фиксированные столбцы и переменные строки, копируя данные из нескольких файлов в один файл (Откройте все файлы Excel в папке).

    Условный цикл удаления VBa не работает

    Автоматическое округление в Pandas Quantile

    MS Access 2007 сворачивает данные в запросе и вызове из Excel

    Ошибка макрокоманды Excel Macro

    Укажите заголовки столбцов при создании файла excel через Perl

    Цифры сумм в ячейке, которые отображаются в виде строки

    Ошибка со ссылкой на ячейку на другом листе

    Как использовать динамическую кнопку в Userform VBA

    Событие Worksheet_change – изменение значения ячейки на всех листах при выборе из раскрывающегося списка

    Изменение имен листов с использованием формулы

    Давайте будем гением компьютера.