Іноді в таких ситуаціях я сумую за молоддю, коли Access був моєю отрутою за вибором, і я міг дати кожному перемикача в групі свою цінність.
Мій хак в C # полягає в тому, щоб використовувати тег для встановлення значення, і коли я роблю виділення з групи, я читаю значення тегу вибраної радіо кнопки. У цьому прикладі у напрямкуGroup - це група, в якій у мене є чотири п'ять радіо кнопок з "None" та "NE", "SE", "NW" та "SW" як теги на інших чотирьох радіо кнопок.
Я активно використовував кнопку, щоб захопити значення перевіреної кнопки, оскільки, якщо присвоєння одного обробника подій всім кнопок "Подія CHeckCHanged" спричиняє запуск кнопки EACH, оскільки зміна однієї змінює їх усі. Тож значення відправника завжди є першим 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());
}
FYI, я тестував і використовував це у своїй роботі.
Джої