Цикл по элементам управления UserControl - PullRequest
2 голосов
/ 01 октября 2010

У меня есть пользовательский элемент управления с 5 простыми радиокнопками, мне не нужно перебирать те, которые находятся в коде позади, но я рисую огромный пробел о том, как это сделать.Может кто-нибудь помочь, пожалуйста

Ответы [ 3 ]

10 голосов
/ 01 октября 2010
foreach (var ctl in this.Controls)
{
    if (ctl is RadioButton)
    {
       // stuff
    }
}

Обратите внимание, что не рекурсивно.Если ваши радиокнопки находятся ниже в иерархии контейнера управления, вам нужно написать рекурсивный метод, чтобы найти их.Смотрите мой старый ответ здесь для примера рекурсивной функции FindControl.

0 голосов
/ 28 февраля 2011

Это может быть немного поздно для вашего случая, но этот пост помог мне найти решение для вашего вопроса (который оказался моим точным вопросом) - в частности, как выбрать группу переключателей в пользовательском контроле таким образом, это не требует изменений кода, если группа переключателей изменяется. Вот решение, которое я придумал:

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.

0 голосов
/ 01 октября 2010

Просто угадайте здесь, но если вы пытаетесь создать группу связанных радиокнопок, вам следует использовать не отдельные радиокнопки, а RadioButtonList.Это удержит все переключатели в группе и позволит вам перебирать их.

...