我有一个包含CheckBox
和RadioButton
控件的表单。当人们点击按钮/框时,它会将结果保存到我的数据库中。稍后,我可能希望其他人检索表单并进行更改或继续使用它。
当我从数据库中将信息拉回到一个新的“搜索”表单(看起来与用于提交数据的表单完全相同)时,我希望单选按钮能够反映表单保存时的状态。因此,如果保存时框为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
答案 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
事件。解决了我所有的问题。似乎有点傻是默认的,但是经验教训。所有工作正如我现在所需要的那样。
感谢所有输入!!!