VB 单选按钮和组合框 Flash
VB Radio button and Combo Box Flash
我编写了一小段代码来在选中单选按钮时更改组合框的显示成员。我遇到的唯一问题是,当我在单选按钮之间切换时,组合框消失然后一秒钟后又回来,有什么办法可以解决这个问题。
Private Sub SearchOptionChange(sender As Object, e As EventArgs) 句柄 RBExchange.CheckedChanged, RBPostcode.CheckedChanged
Dim RB As RadioButton = CType(sender, RadioButton)
If RB.Name = "RBExchange" AndAlso RB.Checked Then
ComboBox1.DisplayMember = "Exchange"
ComboBox1.Text = ""
ElseIf RB.Name = "RBPostcode" AndAlso RB.Checked Then
ComboBox1.DisplayMember = "Postcode"
ComboBox1.Text = ""
End If
End Sub
我使用以下方法重现了您的问题,只有当 DropDownStyle 设置为 Simple 时才会出现这种情况。因此,如果可能,将 DropDownStyle 设置为 DropDown。
请注意,我使用了 5,000 个项目并且没有闪烁,跳到 10,000 个并且闪烁仍然存在,所以除了上述建议之外,如果业务逻辑允许,请考虑是否可能减少 ComboBox 中的项目数量。
使用测试并注意,当 DropDownStyle 设置为 Simple 时,即使 SuspendLayout 和 ResumeLayout 也没有帮助。
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) _
Handles MyBase.Load
Dim ItemList As New List(Of item)
For x As Integer = 0 To 50000
ItemList.Add(New item With
{
.Exchange = "E" & x.ToString,
.PostCode = "P" & x.ToString
})
Next
ComboBox1.DisplayMember = "Exchange"
ComboBox1.DataSource = ItemList
End Sub
Private Sub RBExchange_CheckedChanged(sender As Object, e As EventArgs) _
Handles RBExchange.CheckedChanged, RBPostcode.CheckedChanged
Dim RB As RadioButton = CType(sender, RadioButton)
RB.SuspendLayout()
If RB.Name = "RBExchange" AndAlso RB.Checked Then
ComboBox1.DisplayMember = "Exchange"
ComboBox1.Text = ""
ElseIf RB.Name = "RBPostcode" AndAlso RB.Checked Then
ComboBox1.DisplayMember = "Postcode"
ComboBox1.Text = ""
End If
RB.ResumeLayout()
End Sub
End Class
Public Class item
Public Property Exchange
Public Property PostCode
End Class
我编写了一小段代码来在选中单选按钮时更改组合框的显示成员。我遇到的唯一问题是,当我在单选按钮之间切换时,组合框消失然后一秒钟后又回来,有什么办法可以解决这个问题。
Private Sub SearchOptionChange(sender As Object, e As EventArgs) 句柄 RBExchange.CheckedChanged, RBPostcode.CheckedChanged
Dim RB As RadioButton = CType(sender, RadioButton)
If RB.Name = "RBExchange" AndAlso RB.Checked Then
ComboBox1.DisplayMember = "Exchange"
ComboBox1.Text = ""
ElseIf RB.Name = "RBPostcode" AndAlso RB.Checked Then
ComboBox1.DisplayMember = "Postcode"
ComboBox1.Text = ""
End If
End Sub
我使用以下方法重现了您的问题,只有当 DropDownStyle 设置为 Simple 时才会出现这种情况。因此,如果可能,将 DropDownStyle 设置为 DropDown。
请注意,我使用了 5,000 个项目并且没有闪烁,跳到 10,000 个并且闪烁仍然存在,所以除了上述建议之外,如果业务逻辑允许,请考虑是否可能减少 ComboBox 中的项目数量。
使用测试并注意,当 DropDownStyle 设置为 Simple 时,即使 SuspendLayout 和 ResumeLayout 也没有帮助。
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) _
Handles MyBase.Load
Dim ItemList As New List(Of item)
For x As Integer = 0 To 50000
ItemList.Add(New item With
{
.Exchange = "E" & x.ToString,
.PostCode = "P" & x.ToString
})
Next
ComboBox1.DisplayMember = "Exchange"
ComboBox1.DataSource = ItemList
End Sub
Private Sub RBExchange_CheckedChanged(sender As Object, e As EventArgs) _
Handles RBExchange.CheckedChanged, RBPostcode.CheckedChanged
Dim RB As RadioButton = CType(sender, RadioButton)
RB.SuspendLayout()
If RB.Name = "RBExchange" AndAlso RB.Checked Then
ComboBox1.DisplayMember = "Exchange"
ComboBox1.Text = ""
ElseIf RB.Name = "RBPostcode" AndAlso RB.Checked Then
ComboBox1.DisplayMember = "Postcode"
ComboBox1.Text = ""
End If
RB.ResumeLayout()
End Sub
End Class
Public Class item
Public Property Exchange
Public Property PostCode
End Class