Иногда в подобных ситуациях я скучаю по своей юности, когда Access был моим любимым ядом, и я мог дать каждому переключателю в группе свое собственное значение.
Мой хакер в C # заключается в использовании тега для установки значения, и когда я делаю выбор из группы, я читаю значение тега выбранного радиокнопки. В этом примере directionGroup - это группа, в которой у меня есть четыре пяти переключателя с «None» и «NE», «SE», «NW» и «SW» в качестве тегов на других четырех переключателях.
Я проактивно использовал кнопку, чтобы зафиксировать значение отмеченной кнопки, потому что назначение одного обработчика событий событию CHeckCHanged для всех кнопок приводит к срабатыванию КАЖДОЙ кнопки, потому что изменение одной кнопки меняет их все. Таким образом, значение отправителя всегда является первым RadioButton в группе. Вместо этого я использую этот метод, когда мне нужно выяснить, какой из них выбран, со значениями, которые я хочу получить в свойстве Tag каждого RadioButton.
private void ShowSelectedRadioButton()
{
List<RadioButton> buttons = new List<RadioButton>();
string selectedTag = "No selection";
foreach (Control c in directionGroup.Controls)
{
if (c.GetType() == typeof(RadioButton))
{
buttons.Add((RadioButton)c);
}
}
var selectedRb = (from rb in buttons where rb.Checked == true select rb).FirstOrDefault();
if (selectedRb!=null)
{
selectedTag = selectedRb.Tag.ToString();
}
FormattableString result = $"Selected Radio button tag ={selectedTag}";
MessageBox.Show(result.ToString());
}
К вашему сведению, я протестировал и использовал это в своей работе.
детеныш