2016-04-10 17 views
0

Ich habe ein Kombinationsfeld, das ein paar Elemente in ihnen enthält, wo sie Text in ein Textfeld hinzufügen. Ich möchte verhindern, dass dasselbe Element zweimal hintereinander ausgewählt wird, da sich der Index nie geändert hat, aber der Code weiterhin ausgeführt wird.Verhindern Code ausgeführt, wenn Combobox SelectedIndex wurde nie geändert

Hier ist, was ich getan habe:

Dim intComboIndex As Integer = -1 
    Dim cboComboBox As ComboBox = CType(sender, ComboBox) 
    Dim intComboSelIndex As Integer = cboComboBox.SelectedIndex 
    If intComboSelIndex > -1 And intComboSelIndex <> intComboIndex Then intComboIndex = intComboSelIndex 

Gibt es eine effizientere Art und Weise, dies zu tun, ohne ein anderes Kombinationsfeld erstellen zu müssen und die Indizes vergleichen?

+0

Welches Ereignis ist das? – Plutonix

+0

selectedindexexchanged – hey123

Antwort

1

Sie müssen den zuvor ausgewählten Index an anderer Stelle speichern, da Sie die Variable jedes Mal neu erstellen, wenn das Ereignis ausgelöst wird.

Ich würde empfehlen, den zuvor ausgewählten Index auf Klassenebene zu speichern und diesen dann mit dem aktuell ausgewählten Index zu vergleichen.

Public Class Form1 
    Dim ComboBoxPrevIndex As Integer = -1 'Declared at class level, outside any Sub or Function. 

    Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged 
     Dim SenderBox As ComboBox = DirectCast(sender, ComboBox) 'Get the control that raised the ever. 

     'Has the selection changed? 
     If ComboBoxPrevIndex <> SenderBox.SelectedIndex _ 
      AndAlso SenderBox.SelectedIndex > -1 Then 
      'Do stuff... 
     End If 

     ComboBoxPrevIndex = SenderBox.SelectedIndex 'Set the new, previous index. 
    End Sub 
End Class 

Sie vielleicht bemerkt haben, dass ich AndAlsoAnd statt verwendet. Dies liegt daran, dass AndAlso kurzgeschlossen ist, was bedeutet, dass nur die Bedingung überprüft wird, ob die Bedingung auf der linken Seite True ist.

Verwandte Themen