Ciao.
Il problema è che il controllo cercato è o può essere, profondamente annidato dentro un controllo padre. Ecco perchè ci vuole, secondo me, una funzione ricorsiva (scritta bene, beninteso )

Sto provando a cercare in rete e forse ho trovato qualcosa (in c#)
Non ho ancora provato, ma penso che vada:
codice:
private RadioButton GetSelectedRadioButton(string groupName)
{
    return GetSelectedRadioButton(Controls, groupName);
}

private RadioButton GetSelectedRadioButton(ControlCollection controls, string groupName)
{
    RadioButton retval = null;

    if (controls != null)
    {
        foreach (Control control in controls)
        {
            if (control is RadioButton)
            {
                RadioButton radioButton = (RadioButton) control;

                if (radioButton.GroupName == groupName && radioButton.Checked)
                {
                    retval = radioButton;
                    break;
                }
            }

            if (retval == null)
            {
                retval = GetSelectedRadioButton(control.Controls, groupName);
            }
        }
    }

    return retval;
}
ciao