我用下面重現您的問題,當DropDownStyle設置爲簡單時纔會發生。所以如果可能的話,將DropDownStyle設置爲DropDown。
注意我使用了5,000個項目,並且沒有閃爍,跳到10,000,並且閃爍在那裏,因此除了上面的建議之外,如果業務邏輯允許,考慮是否可以減少ComboBox中的項目數。
測試使用並注意,即使SuspendLayout和ResumeLayout沒有幫助時DropDownStyle設置爲簡單。
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
你可能想要顯示代碼,否則我們猜測你在做什麼。根據[問] – Plutonix
我已添加代碼 –
什麼是數據源?第二個(如果意思是字面意思)聽起來很長時間,但更改DisplayMember意味着LB必須重新繪製可見內容。 DataSource中有多少個元素?另外,如果您使用RB的TAG屬性來存儲成員字符串,則可以將該代碼塊縮減爲1-2行。 – Plutonix