Это может быть немного поздно для вашего случая, но этот пост помог мне найти решение для вашего вопроса (который оказался моим точным вопросом) - в частности, как выбрать группу переключателей в пользовательском контроле таким образом, это не требует изменений кода, если группа переключателей изменяется. Вот решение, которое я придумал:
Protected Function GetRadioButtonGroup(ByVal control As Control, ByVal groupName As String) As RadioButton()
Dim rbList As New System.Collections.Generic.List(Of RadioButton)
If TypeOf control Is RadioButton AndAlso DirectCast(control, RadioButton).GroupName = groupName Then
rbList.Add(control)
End If
If control.HasControls Then
For Each subcontrol As Control In control.Controls
rbList.AddRange(GetRadioButtonGroup(subcontrol, groupName))
Next
End If
Return rbList.ToArray
End Function
Тогда все, что вам нужно сделать, это получить переключатели в группе (и никаких других элементов управления):
Dim radioButtons As RadioButton() = GetRadioButtonGroup(Me, "MyGroupName")
Извините, но «Использовать RadioButtonList» не является хорошим решением для изменения существующего кода, написанного кем-то другим, поскольку это потребует значительных изменений разметки и CSS. Конечно, если я пишу свой собственный элемент управления, я буду использовать RadioButtonList.