如何在未执行任何操作的情况下将单选按钮标记为已选中?
How to mark a radio button as checked with no action performed?
我有一个带有 CheckBox
和 RadioButton
控件的表单。当人们点击 buttons/boxes 时,它会将结果保存到我的数据库中。稍后,我可能希望其他人检索表单并进行更改或继续使用它。
当我将信息从数据库拉回新的 "search" 表单(看起来与用于提交数据的表单完全一样)时,我希望单选按钮反映它们在表格已保存。因此,如果一个框在保存时为 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
我会将表单关闭事件中单选按钮的状态保存到 my.settings 并在表单加载事件中读取所有内容。这样您就可以在退出程序之前保留单选按钮的最后设置。
只是为了把它变成一个答案:
创建要在表单加载事件中使用的布尔值。默认情况下将其值设置为 true,当加载完成时,将其值设置为 false。
在每个 radio/check 事件中检查该值,如果它是真的就退出子程序,否则执行它应该做的任何事情。
此致。
您可以使用 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 事件。
就我而言,我最终将我的代码从
_CheckedChanged
事件,这是从设计视图中单击控件时的默认事件
_MouseClick
事件。解决了我所有的问题。默认设置似乎有点愚蠢,但吸取了教训。一切都按我现在的需要工作。
感谢大家的参与!!!
我有一个带有 CheckBox
和 RadioButton
控件的表单。当人们点击 buttons/boxes 时,它会将结果保存到我的数据库中。稍后,我可能希望其他人检索表单并进行更改或继续使用它。
当我将信息从数据库拉回新的 "search" 表单(看起来与用于提交数据的表单完全一样)时,我希望单选按钮反映它们在表格已保存。因此,如果一个框在保存时为 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
我会将表单关闭事件中单选按钮的状态保存到 my.settings 并在表单加载事件中读取所有内容。这样您就可以在退出程序之前保留单选按钮的最后设置。
只是为了把它变成一个答案:
创建要在表单加载事件中使用的布尔值。默认情况下将其值设置为 true,当加载完成时,将其值设置为 false。
在每个 radio/check 事件中检查该值,如果它是真的就退出子程序,否则执行它应该做的任何事情。
此致。
您可以使用 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 事件。
就我而言,我最终将我的代码从
_CheckedChanged
事件,这是从设计视图中单击控件时的默认事件
_MouseClick
事件。解决了我所有的问题。默认设置似乎有点愚蠢,但吸取了教训。一切都按我现在的需要工作。
感谢大家的参与!!!