Solved! Go to Solution.
You could call Remove or RemoveAt to remove the item from the list then call Insert to add it back at the desired index position.
Use this interface to define a custom combo box.
Public Class Combo1
Inherits ESRI.ArcGIS.Desktop.AddIns.ComboBox
Public Sub New()
'Add two items to the combo box.
Dim o1 As New Point()
o1.PutCoords(0, 0)
Dim c1 As Integer = Me.Add("Item1", o1)
Dim o2 As New Point()
o2.PutCoords(1, 1)
Dim c2 As Integer = Me.Add("Item2", o2)
'Add the application's caption.
Dim app As ESRI.ArcGIS.Framework.IApplication = TryCast(Me.Hook, ESRI.ArcGIS.Framework.IApplication)
Me.Add(app.Caption)
'Add one item then remove
Dim c3 AsInteger = Me.Add("Item3")
Me.Remove(c3)
'Select the second item.
Me.[Select](c2)
End Sub
Protected Overloads Overrides Sub OnSelChange(ByVal cookie AsInteger)
If cookie = -1 Then
Exit Sub
End If
'Get the associated object.
Dim tag As Point = TryCast(Me.GetItem(cookie).Tag, Point)
If tag IsNot Nothing Then
System.Windows.Forms.MessageBox.Show((tag.X & ", ") + tag.Y)
End If
End Sub
Protected Overloads Overrides Sub OnEnter()
'Loop through the item collection.
Fo rEach item As ESRI.ArcGIS.Desktop.AddIns.ComboBox.Item In Me.items
If Me.Value = item.Caption Then
Exit Sub
End If
Next
Me.Add(Me.Value)
End Sub
Protected Overloads Overrides Sub OnEditChange(ByVal editString AsString)
If String.Compare(editString, "ABC", True) = 0 Then
System.Windows.Forms.MessageBox.Show("editString is " & Me.Value)
End If
End Sub
Protected Overloads Overrides Sub OnFocus(ByVal [set] AsBoolean)
If [set] Then
System.Diagnostics.Debug.WriteLine("Get focus.")
End If
If Not [set] Then
System.Diagnostics.Debug.WriteLine("Lose focus.")
End If
End Sub
Protected Overloads Overrides Sub OnUpdate()
Me.Enabled = ArcMap.Application Is Not Nothing
End Sub
End Class