Не могу сгенерировать несколько радиокнопок в VB.Net - PullRequest
0 голосов
/ 25 июня 2018

Часть программы, над которой я сейчас работаю, потребует от меня создания нескольких рядов переключателей для каждой записи, хранящейся в массиве.Это будет включать в себя программное создание групповых блоков с тремя переключателями в каждом.Тем не менее, я не могу заставить свой код генерировать более 1 кнопки на ящик.Код моей песочницы приведен ниже.

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    Dim rb As RadioButton
    Dim gb As GroupBox

    For i As Integer = 1 To 3

        gb = New GroupBox

        With gb
            .Size = New System.Drawing.Size(400, 100)
            .Name = "gb" & i
            .Top = 30 + 100 * (i - 1)
            .Left = 30
        End With

        Me.Controls.Add(gb)

        For j As Integer = 1 To 3

            rb = New RadioButton

            With rb
                .Top = 50
                .Left = 40 * j
                .Name = "rb" & i & j
            End With

            Me.Controls("gb" & i).Controls.Add(rb)
        Next

    Next

    Form2.Show()

End Sub

Стоит отметить: «Найти / заменить« RadioButton »на« TextBox »дает мне три текстовых поля - есть ли какое-то свойство для радиокнопок, которое я пропускаю?

Заранее спасибо !!

Ответы [ 3 ]

0 голосов
/ 25 июня 2018

Ваши радиокнопки могут быть там, они находятся прямо за рамкой группы.Верхняя и Левая часть относятся к родителю.

RadioButton1.Parent = GroupBox1
RadioButton1.Top = 30
RadioButton1.Left = 30
GroupBox1.Controls.Add(RadioButton1)
0 голосов
/ 25 июня 2018

Показанный код имел проблемы из-за ширины. Не уверен, что вы пытаетесь достичь, но это "исправит" ваш код.

    Dim rb As RadioButton
    Dim gb As GroupBox

    For i As Integer = 1 To 3

        gb = New GroupBox

        With gb
            .Size = New System.Drawing.Size(400, 100)
            .Name = "gb" & i
            .Top = 30 + 100 * (i - 1)
            .Left = 30
            .Anchor = .Anchor Or AnchorStyles.Right
        End With

        Me.Controls.Add(gb)

        For j As Integer = 1 To 3

            rb = New RadioButton

            With rb
                .Top = 50
                .Left = 40 * j
                .Name = "rb" & i & j
                .AutoSize = True 'added <<<<<<<<<<<<<<<<<<<
                '.Text = .Name
                '.BackColor = Color.AliceBlue
            End With

            Me.Controls("gb" & i).Controls.Add(rb) 'note rb.Width changes here

            Debug.Write(rb.Name)
            Debug.WriteLine("  Top: {0}, Left: {1}, Width: {2}, Height: {3}",
                            rb.Top, rb.Left, rb.Width, rb.Height)

        Next

    Next
0 голосов
/ 25 июня 2018

Как только вы определите свойство ширины, появятся флажки.

Я обнаружил, что размер по умолчанию, по крайней мере, на моей машине был 104. Таким образом, перемещения вправо на 40 было недостаточно.

            With rb
                .Top = 50
                .Left = 40 * j
                .Name = "rb" & i & j
                .BackColor = System.Drawing.Color.Orange
                '.Text = "rb" & i & j
                .Width = 40
            End With

Цвет фона (который можно удалить, помогает показать, где на самом деле находится флажок).

...