title: Listbox event SelectedIndexChanged fires when index does not change
body: <p>I have this code behind a winforms which simply has a <code>listbox</code> as its only control:</p>
  
  <pre><code>Imports System.Windows.Forms
  Public Class Form1
  
      Public Sub New()
  
          ' This call is required by the designer.
          InitializeComponent()
  
          ' Add any initialization after the InitializeComponent() call.
          ListBoxX.Items.Add("hello")
          ListBoxX.Items.Add("world")
          ListBoxX.Items.Add("foo")
          ListBoxX.Items.Add("bar")
  
      End Sub
  
      Private Sub ListBoxX_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles ListBoxX.SelectedIndexChanged
          MessageBox.Show("change registered")
      End Sub
  
      Private Sub ListBoxX_SelectedValueChanged(sender As Object, e As System.EventArgs) Handles ListBoxX.SelectedValueChanged
          MessageBox.Show("change registered X")
      End Sub
  End Class
  </code></pre>
  
  <p>If "hello" is selected and I then click on "hello" then the message box appears - surely if I'm clicking on the same item then the <em>SelectedIndex</em> has <strong>not changed</strong> - so why is this event firing? How do I ensure it only fires when the index changes?</p>