Skip to content

Instantly share code, notes, and snippets.

@wolf99
Last active August 29, 2015 14:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save wolf99/58efd46081fb86ea32c2 to your computer and use it in GitHub Desktop.
Save wolf99/58efd46081fb86ea32c2 to your computer and use it in GitHub Desktop.
A VB.NET control, derived from ComboBox, that adds a SelectedIndexChanging event to allow the change to be cancelled
'This is a VB version of the C# code by Mike Bevers as of 19 Aug 2015 12:07 at
'http://www.mikebevers.be/blog/2010/02/extended-combobox-with-a-selection-changing-event/
'Usage:
'Private Sub BetterComboBox1_SelectedIndexChanging( _
' sender As System.Object, _
' e As System.ComponentModel.CancelEventArgs _
') Handles BetterComboBox1.SelectedIndexChanging
'
' If True Then
' e.Cancel = True
' EndIf
'End Sub
Imports System.Windows.Forms
Public Class BetterComboBox
Inherits ComboBox
Public Event SelectedIndexChanging As System.ComponentModel.CancelEventHandler
Private _lastIndex As Integer = -1
<System.ComponentModel.Browsable(False)>
Public ReadOnly Property LastIndex As Integer
Get
Return _lastIndex
End Get
End Property
Public Sub New()
MyBase.New()
_lastIndex = -1
End Sub
Protected Overridable Sub OnSelectedIndexChanging(e As System.ComponentModel.CancelEventArgs)
RaiseEvent SelectedIndexChanging(Me, e)
End Sub
Protected Overrides Sub OnSelectedIndexChanged(e As System.EventArgs)
If _lastIndex <> SelectedIndex Then
Dim cancelEventArgs As New System.ComponentModel.CancelEventArgs()
OnSelectedIndexChanging(cancelEventArgs)
If cancelEventArgs.Cancel = False Then
_lastIndex = SelectedIndex
MyBase.OnSelectedIndexChanged(e)
Else
SelectedIndex = _lastIndex
End If
End If
End Sub
End Class
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment