Вы можете отправить CB_SETCURSEL
сообщений в поле со списком. Параметр wParam
SendMessage
должен быть нулевым индексом элемента, который вы хотите установить в качестве выбранного индекса, а lParam
здесь бесполезен.
Приложение отправляет CB_SETCURSEL
сообщение, чтобы выбрать строку в списке со списком. При необходимости список прокручивает строку в виде . Текст в элементе управления редактированием поля со списком изменяется, чтобы отобразить новый выбор, и любой предыдущий выбор в списке удаляется.
wParam
: Указывает нулевой индекс строки для выбора. Если этот параметр равен -1, любой текущий выбор в списке удаляется, а элемент управления очищается.
lParam
: Этот параметр не используется.
C# Пример
[System.Runtime.InteropServices.DllImport("user32.dll")]
static extern IntPtr SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);
const int CB_SETCURSEL = 0x014E;
void SetSelectedIndex(IntPtr comboBoxHandle, int index)
{
SendMessage(comboBoxHandle, CB_SETCURSEL, index, 0);
}
VB.NET Пример
<System.Runtime.InteropServices.DllImport("user32.dll")> _
Shared Function SendMessage(ByVal hWnd As IntPtr, ByVal Msg As Integer, _
ByVal wParam As Integer, ByVal lParam As Integer) As IntPtr
End Function
Const CB_SETCURSEL As Integer = &H14E
Sub SetSelectedIndex(comboBoxHandle As IntPtr, index As Integer)
SendMessage(comboBoxHandle, CB_SETCURSEL, index, 0)
End Sub
именно то, что мне нужно. Благодарю. Кроме того, существует ли какой-либо метод получения графа элемента управления ComboBox? – klados
Добро пожаловать :) –
'CB_GETCOUNT' предназначен для подсчета количества предметов. Не стесняйтесь сообщать мне, если вы задали вопрос об этом, и я отправлю вам пример. –