如何在未执行任何操作的情况下将单选按钮标记为已选中?

时间:2016-07-18 13:48:02

标签: vb.net visual-studio-2010 radio-button

我有一个包含CheckBoxRadioButton控件的表单。当人们点击按钮/框时,它会将结果保存到我的数据库中。稍后,我可能希望其他人检索表单并进行更改或继续使用它。

当我从数据库中将信息拉回到一个新的“搜索”表单(看起来与用于提交数据的表单完全相同)时,我希望单选按钮能够反映表单保存时的状态。因此,如果保存时框为TRUE(已选中),我希望它在新表单上显示为TRUE(已选中)。

但是,当我使用

radiobutton.checked = True

它将我的按钮标记为已选中....它也像按钮再次单击一样。所以我的数据库中有重复的结果。每次打开表单时它都会继续这样做。

所以,我想要一种方法将盒子标记为已选中(保存时的状态)但不会再次引起事件。

以下是一个例子:

str = "SELECT * from OpenEvents WHERE EventID = " & eventId & ""
    Dim cmd6 As OleDbCommand = New OleDbCommand(str, myConnection)
    dr = cmd6.ExecuteReader()
    While dr.Read()
        contactType = dr("ContactType").ToString
        abend = dr("Abend").ToString
        paged = dr("Paged").ToString
        shortSummary = dr("ShortSummary").ToString
        eventNotes = dr("EventNotes").ToString
        impacting = dr("Impacting").ToString
        L1Engaged = dr("L1Engaged").ToString
        L2Engaged = dr("L2Engaged").ToString
        managerEngaged = dr("ManagerEngaged")
        IncTicket = dr("IncTicket").ToString
    End While
    myConnection.Close()

    If contactType = "Call" Then
        CallRadioButton.Checked = True
    ElseIf contactType = "IM" Then
        IMRadioButton.Checked = True
    ElseIf contactType = "Other" Then
        OtherRadioButton.Checked = True
    ElseIf contactType = "Alert" Then
        AlertRadioButton.Checked = True
    Else
    End If

    If abend = "True" Then AbendCheckBox.Checked = True
    If paged = "True" Then PagedYes.Checked = True
    ShortSummaryTextBox.Text = shortSummary
    DetailsTextBox.Text = eventNotes
    If impacting = "True" Then ImpactingYesRadioButton.Checked = True
    If L1Engaged = "True" Then L1YesRadioButton.Checked = True
    If L2Engaged = "True" Then L2YesRadioButton.Checked = True
    If managerEngaged = "True" Then ManagerYesRadioButton.Checked = True
    IncTicketTextBox.Text = IncTicket

4 个答案:

答案 0 :(得分:0)

我会将表单关闭事件中的radiobuttons的状态保存到my.settings并在表单加载事件上读回所有内容。这样,您可以在退出程序之前保留radiobuttons的最后设置。

答案 1 :(得分:0)

只是把它变成一个答案:

创建一个在表单加载事件中使用的布尔值。默认情况下启动它的值为true,当加载完成时,将其值设置为false。

在每个无线电/检查事件中,您检查该值,如果它是真的只是退出该子,否则做它应该做的任何事情。

最好的问候。

答案 2 :(得分:0)

您可以使用Click事件代替CheckedChanged事件。

这样做,如果您想提升链接到RadioButton的事件,您可以使用PerformClick代替Checked = True

如果您想在不举起活动的情况下更改已检查状态,可以使用Checked = True

这里有一个小例子:

Private Sub RadioButton1_Click(sender As Object, e As EventArgs) Handles RadioButton1.Click, RadioButton2.Click, RadioButton3.Click
    Select Case sender.name
        Case Is = "RadioButton1"
            Me.Label1.BackgroundColor = Color.Yellow
            Me.Label2.BackgroundColor = Color.Gray
            Me.Label3.BackgroundColor = Color.Gray
        Case Is = "RadioButton2"
            Me.Label1.BackgroundColor = Color.Gray
            Me.Label2.BackgroundColor = Color.Yellow
            Me.Label3.BackgroundColor = Color.Gray
        Case Is = "RadioButton3"
            Me.Label1.BackgroundColor = Color.Gray
            Me.Label2.BackgroundColor = Color.Gray
            Me.Label3.BackgroundColor = Color.Yellow
    End Select
End Sub

Private Sub Btn_ChangeSelected_Click(sender As Object, e As EventArgs) Handles Btn_ChangeSelected.Click
    Me.RadioButton1.Checked = True
End Sub

Private Sub Btn_PerformClick_Click(sender As Object, e As EventArgs) Handles Btn_PerformClick.Click
    Me.RadioButton1.PerformClick()
End Sub

如果单击Btn_ChangeSelected,将检查RadioButton1,但不会引发任何事件。

如果单击Btn_PerformClick将检查RadioButton1并且将引发RadioButton1.click事件。

答案 3 :(得分:0)

在我的情况下,我最终从

移动我的代码
_CheckedChanged 

事件,这是从设计视图中单击控件到

时的默认设置
_MouseClick

事件。解决了我所有的问题。似乎有点傻是默认的,但是经验教训。所有工作正如我现在所需要的那样。

感谢所有输入!!!