A veces, en situaciones como esta, extraño mi juventud, cuando Access era mi veneno preferido, y podía darle a cada botón de radio de un grupo su propio valor.
Mi truco en C # es usar la etiqueta para establecer el valor, y cuando hago una selección del grupo, leo el valor de la etiqueta del botón de radio seleccionado. En este ejemplo, directionGroup es el grupo en el que tengo cuatro cinco botones de radio con "Ninguno" y "NE", "SE", "NW" y "SW" como etiquetas en los otros cuatro botones de radio.
Usé proactivamente un botón para capturar el valor del botón marcado, porque al asignar un controlador de eventos a todos los eventos CHeckCHanged de los botones, CADA botón se dispara, porque cambiar uno los cambia todos. Entonces, el valor de remitente es siempre el primer RadioButton del grupo. En su lugar, utilizo este método cuando necesito averiguar cuál está seleccionado, con los valores que quiero recuperar en la propiedad Etiqueta de cada 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, he probado y utilizado esto en mi trabajo.
Joey