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显示的事件只会触发一次。我尝试将代码从加载事件移到显示的事件,效果非常好。更改表单大小不会影响它。谢谢你的帮助。