Vb.net 是否可以在不选择单选按钮的情况下显示单选按钮?
我在一个分组框中有两个单选按钮。我不想选择它们中的任何一个,因此用户必须做出选择。(我已准备好代码,以确保在移动到下一个表单之前已选择其中一个。) 我将两个按钮的Vb.net 是否可以在不选择单选按钮的情况下显示单选按钮?,vb.net,Vb.net,我在一个分组框中有两个单选按钮。我不想选择它们中的任何一个,因此用户必须做出选择。(我已准备好代码,以确保在移动到下一个表单之前已选择其中一个。) 我将两个按钮的Checked属性都设置为False,但是当我运行表单时,它仍然显示选中的顶部按钮。我将下面的代码添加到表单的Load事件中,但它仍然显示一个为选中状态 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load RBArchive.Ch
Checked
属性都设置为False
,但是当我运行表单时,它仍然显示选中的顶部按钮。我将下面的代码添加到表单的Load
事件中,但它仍然显示一个为选中状态
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
RBArchive.Checked = False
RBCopy.Checked = False
End Sub
如何使两个单选按钮保持未选中状态?在设计器中,仅将每个按钮的默认值设置为false。另一个问题是组不能是表单上的第一个控件(tab index=0)。如果无线电组是第一个控件,则放置/放置/移动其他控件以保持选项卡索引0的位置 如果分组是第一个控件,则在表单加载时将选择组的第一个-即使所有单选按钮默认为false。但是,如果组控件不是窗体上的第一个控件,则不必执行其他操作,只需将控件设置为false即可。这是针对winforms的,而不是WPF 在asp.net中?然后将组设置为-1效果相当好。因此,如果这是WPF,那么我将尝试将组控件设置为-1。在标准winforms中,组控件不会显示索引号(就像asp.net分组单选按钮一样) 因此,我倾向于使用这个:
Private Function GetGroupBox(grpb As GroupBox) As Integer
' return seleted control - starts at 0
For Each ctrl As RadioButton In grpb.Controls
If ctrl.Checked Then Return ctrl.TabIndex
Next
Return -1 ' if none checked
End Function
以上假设组中所有单选按钮的tabindex设置为1
因此,在代码中,如果有5个按钮,我可以:
If GetGroupBox(Me.gRadioGroupProvider) = 0 Then
strProvider = "Microsoft.ACE.OLEDB.12.0"
Else
strProvider = "Microsoft.Jet.OLEDB.4.0"
End If
所以,现在您可以得到一个组返回值,就像在asp.net中一样,即VB6/VBA
无论如何,如果所有单选按钮的默认值均为false,并且单选组不是窗体上的第一个控件,则不应显示为选中。
如果这是WPF,则所有下注都将关闭。在设计器中,只需将每个按钮的默认值设置为false。另一个问题是组不能是表单上的第一个控件(tab index=0)。如果无线电组是第一个控件,则放置/放置/移动其他控件以保持选项卡索引0的位置 如果分组是第一个控件,则在表单加载时将选择组的第一个-即使所有单选按钮默认为false。但是,如果组控件不是窗体上的第一个控件,则不必执行其他操作,只需将控件设置为false即可。这是针对winforms的,而不是WPF 在asp.net中?然后将组设置为-1效果相当好。因此,如果这是WPF,那么我将尝试将组控件设置为-1。在标准winforms中,组控件不会显示索引号(就像asp.net分组单选按钮一样) 因此,我倾向于使用这个:
Private Function GetGroupBox(grpb As GroupBox) As Integer
' return seleted control - starts at 0
For Each ctrl As RadioButton In grpb.Controls
If ctrl.Checked Then Return ctrl.TabIndex
Next
Return -1 ' if none checked
End Function
以上假设组中所有单选按钮的tabindex设置为1
因此,在代码中,如果有5个按钮,我可以:
If GetGroupBox(Me.gRadioGroupProvider) = 0 Then
strProvider = "Microsoft.ACE.OLEDB.12.0"
Else
strProvider = "Microsoft.Jet.OLEDB.4.0"
End If
所以,现在您可以得到一个组返回值,就像在asp.net中一样,即VB6/VBA
无论如何,如果所有单选按钮的默认值均为false,并且单选组不是窗体上的第一个控件,则不应显示为选中。
如果这是WPF,那么所有赌注都将被取消。这是否回答了您的问题@图拉马特要知道,对于这个问题,公认的、经过投票表决的解决方案是不好的。如果您以事件所示的形式执行此操作,正如它所建议的那样,最小化和还原表单将引发事件并重置复选框,无论这是否是有意的。@JoelCoehoorn Hans Passant的第二个答案正确吗?@JoelCoehoorn显示的事件只会触发一次。我尝试将代码从加载事件移到显示的事件,效果非常好。更改表单大小不会影响它。谢谢你的帮助。这能回答你的问题吗@图拉马特要知道,对于这个问题,公认的、经过投票表决的解决方案是不好的。如果您以事件所示的形式执行此操作,正如它所建议的那样,最小化和还原表单将引发事件并重置复选框,无论这是否是有意的。@JoelCoehoorn Hans Passant的第二个答案正确吗?@JoelCoehoorn显示的事件只会触发一次。我尝试将代码从加载事件移到显示的事件,效果非常好。更改表单大小不会影响它。谢谢你的帮助。