Bryian Tan
Не совсем понятно, как именно код динамически добавляет переключатель в форму. Что-то не так с математикой. предположим, что высота равна 24, здесь выход. Вы видите проблему? Третий должен быть 330 + (2 * высота) ...
Первая контрольная позиция (100, 330)
Вторая контрольная позиция (100, 330 + 24)
Третье положение управления (100, 330 + 24)
Четвертая Контрольная позиция (100, 330 + 24)
...
Вот вам пример. Код сначала получит количество элементов управления, добавленных в форму, а затем вызовет метод для создания элемента управления RadioButton, передав точки и количество элементов управления.
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim radioButtonList = Me.GetAllControls(Me).OfType(Of RadioButton)().ToList()
Dim radioButtonCount As Integer = 1
For Each item As RadioButton In radioButtonList
If (item.Name.Contains("SomeDynamicRb")) Then
radioButtonCount = radioButtonCount + 1
End If
Next
If radioButtonCount = 0 Then
radioButtonCount = 1
End If
AddRadiobutton(100, 100, radioButtonCount)
End Sub
Sub AddRadiobutton(ByVal x As Integer, ByVal y As Integer, ByVal count As Integer)
Dim rbl As New RadioButton
If (count = 1) Then
rbl.Location = New Point(x, y)
Else
rbl.Location = New Point(x, y + ((count - 1) * rbl.Height))
End If
rbl.Text = "Radio Button " + count.ToString()
rbl.Name = "SomeDynamicRb_" + count.ToString()
Me.Controls.Add(rbl)
End Sub
Private Function GetAllControls(control As Control) As IEnumerable(Of Control)
Dim controls = control.Controls.Cast(Of Control)()
Return controls.SelectMany(Function(ctrl) GetAllControls(ctrl)).Concat(controls)
End Function
.net - как получить все элементы управления текстовым полем формы - переполнение стека[
^]