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