ComboBox

From Xojo Documentation

Class (inherits from PopupMenu)

A ComboBox is a combination of a TextField and a PopupMenu. The user can type in the field or click to select an item from a list.

Events
Change DropObject MouseExit
Close GotFocus MouseMove
ConstructContextualMenu KeyDown MouseUp
ContextualMenuAction KeyUp MouseWheel
DragEnter LostFocus Open
DragExit MouseDown TextChanged
DragOver MouseEnter
Properties
Active fa-lock-32.png LastAddedRowIndex Scope fa-lock-32.png
AllowAutoComplete LastRowIndex SelectedRow fa-lock-32.png
AllowAutoDeactivate Left SelectedRowIndex
AllowFocusRing LockBottom SelectionLength
AllowTabStop LockLeft SelectionStart
Bold LockRight TabIndex
Enabled LockTop Text
FontName MouseCursor Tooltip
FontSize MouseX fa-lock-32.png Top
FontUnit MouseY fa-lock-32.png Transparent
Handle fa-lock-32.png Name fa-lock-32.png TrueWindow fa-lock-32.png
Height PanelIndex Underline
Index fa-lock-32.png Parent Visible
InitialValue fa-lock-32.png RowCount fa-lock-32.png Width
Italic RowValueAt fa-lock-32.png Window fa-lock-32.png
Methods
AcceptFileDrop AddRowAt RemoveRowAt
AcceptPictureDrop Close RowTagAt
AcceptRawDataDrop DrawInto SelectRowWithTag
AcceptTextDrop Invalidate SelectRowWithValue
AddAllRows Refresh SetFocus
AddRow RemoveAllRows

Notes

macOS

On macOs, the ComboBox height is limited to just a single size, so any changes to the Height property are ignored.

Additionally, the maximum number of visible rows in the dropdown is 15. You can adjust this number using this declare, passing in the ComboBox's handle for controlHandle:

Declare Sub setNumberOfVisibleItems Lib "AppKit" Selector "setNumberOfVisibleItems:" (controlHandle As Integer, count As Integer)
setNumberOfVisibleItems(MyComboBox.Handle, 30)

Windows

On Windows, the ComboBox height is controlled by the font size, so any changes you make to the Height property are ignored.

Sample Code

This code in the Open event handler populates a ComboBox and sets the initial value to the current month:

Var s As String
Var last As Integer
Var d As New Date
s = "January,February,March,April,May,June,July," _
+ "August,September,October,November,December"
last = CountFields(s, ",")
For i As Integer = 1 To last
Me.AddRow(NthField(s, ",", i))
Next
Me.ListIndex = d.Month - 1

The value of the SelectedRowIndex property contains the index of the selected item, but it does not indicate whether the user has entered a value into the ComboBox. Examine the Value property to get the current menu selection or the value entered by the user. For example, the following line in the TextChanged event handler displays either the currently selected menu item or the value typed into the ComboBox.

Label1.Text = Me.Text

This code adds an item to a ComboBox in its Open event handler.

Me.AddRow("October")

This code opens a new window when an item is chosen.

Sub Change()
Var w As ListEditorWindow
If ComboBox1.Text = "Edit List..." Then
w = New ListEditorWindow
End If
End Sub

The following code changes the selected item in a ComboBox

ComboBox1.SelectedRowIndex = 3

See Also

TextField, PopupMenu controls