2015-11-07 53 views
-1

我已經寫了一小段代碼來改變我的組合框的顯示成員,當單選按鈕被選中。我遇到的唯一問題是,當我在單選按鈕之間切換組合框消失,然後又回來一秒,有沒有解決這個問題的方法。VB單選按鈕和組合框閃存

私人小組SearchOptionChange(發送者爲對象,E作爲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 
+0

你可能想要顯示代碼,否則我們猜測你在做什麼。根據[問] – Plutonix

+0

我已添加代碼 –

+0

什麼是數據源?第二個(如果意思是字面意思)聽起來很長時間,但更改DisplayMember意味着LB必須重新繪製可見內容。 DataSource中有多少個元素?另外,如果您使用RB的TAG屬性來存儲成員字符串,則可以將該代碼塊縮減爲1-2行。 – Plutonix

回答

0

我用下面重現您的問題,當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 
+0

謝謝,似乎已經排序了這個問題。 –