无法在 VB.Net 中生成多个单选按钮
Can't Generate Multiple Radio Buttons in VB.Net
我目前正在处理的部分程序将涉及为存储在数组中的每个条目制作多行单选按钮。这将涉及以编程方式创建组合框,每个组合框包含三个单选按钮。但是,我似乎无法让我的代码为每个框生成超过 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
值得注意:Find/Replacing 'RadioButton' 和 'TextBox' 给了我三个文本框——是否有一些 属性 到我缺少的单选按钮?
提前致谢!!
定义宽度 属性 后,复选框就会出现。
我发现至少在我的机器上默认大小是 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
背景颜色(可以移除,有助于显示复选框的实际位置)。
您的单选按钮可能就在组框后面。 Top 和 Left 是相对于父级的。
RadioButton1.Parent = GroupBox1
RadioButton1.Top = 30
RadioButton1.Left = 30
GroupBox1.Controls.Add(RadioButton1)
显示的代码因宽度问题而出现问题。不确定您要完成什么,但这将 "fix" 您的代码。
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
我目前正在处理的部分程序将涉及为存储在数组中的每个条目制作多行单选按钮。这将涉及以编程方式创建组合框,每个组合框包含三个单选按钮。但是,我似乎无法让我的代码为每个框生成超过 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
值得注意:Find/Replacing 'RadioButton' 和 'TextBox' 给了我三个文本框——是否有一些 属性 到我缺少的单选按钮?
提前致谢!!
定义宽度 属性 后,复选框就会出现。
我发现至少在我的机器上默认大小是 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
背景颜色(可以移除,有助于显示复选框的实际位置)。
您的单选按钮可能就在组框后面。 Top 和 Left 是相对于父级的。
RadioButton1.Parent = GroupBox1
RadioButton1.Top = 30
RadioButton1.Left = 30
GroupBox1.Controls.Add(RadioButton1)
显示的代码因宽度问题而出现问题。不确定您要完成什么,但这将 "fix" 您的代码。
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