Элемент управления ComboBox для пользователей Visual Basic 6.0
Обновлен: Ноябрь 2007
Элемент управления ComboBox в Visual Basic 6.0 заменяется элементом управления ComboBox Windows Forms в Visual Basic 2008. Имена некоторых свойств, методов, событий и констант различаются, а в некоторых случаях имеется различие в их поведении.
Концептуальные различия
Событие Change
В Visual Basic 6.0 событие Change объекта ComboBox наступает при изменении текста элемента управления. Событие Change не наступает при выборе элемента из поля списка элемента управления. Программное изменение текста элемента списка не вызывает событие Change.
В Visual Basic 2008 событие Change больше не используется. Событие TextChanged наступает при каждом изменении текста по какой-либо причине, некоторые из которых указаны ниже:
при изменении текста в поле ввода;
при выборе элемента из списка;
при изменении элемента списка программным способом;
при вызове метода AddItem.
Свойство ItemData
В Visual Basic 6.0 свойство ItemData для элемента управления ComboBox может устанавливаться во время разработки в окне Свойства, чтобы связать значение типа Integer с элементом ComboBox.
В Visual Basic 2008 свойство ItemData более не существует. Библиотека Microsoft.VisualBasic.Compatibility содержит функцию SetItemData, которая может использоваться для связывания значения типа Integer с элементом. Функция GetItemData может использоваться для извлечения элемента.
Свойство Locked
В Visual Basic 6.0 свойство Locked элемента управления ComboBox определяет, можно ли редактировать текст в текстовом поле элемента управления.
В Visual Basic 2008 свойство Locked предотвращает перемещение элемента управления в режиме разработки. Для свойства Locked Visual Basic 6.0 не существует прямого эквивалента. Однако того же результата можно достичь, установив для свойства DropDownStyle элемента управления ComboBox в качестве значения DropDownList.
Примечание. В Visual Basic 6.0 установка свойства Locked равным True также предотвращает изменение выделения выбранного элемента. Можно воссоздать такое поведение при помощи отмены выбора в событии MouseDown.
Свойство NewIndex
В Visual Basic 6.0 свойство NewIndex использовалось для извлечения индекса элемента, последним добавленного в элемент управления ComboBox.
В Visual Basic 2008 свойства NewIndex больше не существует. Чтобы извлечь индекс элемента при его добавлении, можно воспользоваться значением, возвращаемым методом Item.Add.
Свойство TopIndex
В Visual Basic 6.0 свойство TopIndex используется, чтобы вернуть или установить значение, указывающее, какой из элементов ComboBox или ListBox отображается в самой верхней позиции. Это свойство чаще всего используется для прокрутки списка без выбора элемента.
В Visual Basic 2008 элемент управления ComboBox больше не поддерживает свойство TopIndex. В большинстве случаев это не является проблемой, так как установка свойства TopIndex не влияет на внешний вид элемента управления до установки свойства Style равным 1 — SimpleCombo. В этом случае можно имитировать такое поведение путем использования элементов управления ListBox и TextBox; элемент управления ListBox все еще поддерживает свойство TopIndex.
Событие Scroll
Событие Scroll в Visual Basic 6.0 используется в сочетании со свойством TopIndex для выполнения действий при прокрутке списка. В Visual Basic 2008 событие Scroll не поддерживается, однако в большинстве случаев событие SelectedIndexChanged может служить приемлемой заменой.
Другие различия
Дополнительно имеются многочисленные концептуальные различия, применяемые ко всем элементам управления, включая различия в привязке данных, обработке шрифтов, операциях перетаскивания, поддержке справки и т. д. Дополнительные сведения см. в разделе Концепции форм Windows Forms (для пользователей Visual Basic 6.0).
Изменения кода для элемента управления ComboBox
Следующие примеры иллюстрируют различия в методах кодирования между Visual Basic 6.0 и Visual Basic 2008.
Изменения кода для определения элемента управления ComboBox как доступного только для чтения
В следующем примере кода демонстрируется способ блокировки добавления новых элементов в элемент управления ComboBox:
' Visual Basic 6.0
Combo1.Locked = True
' Visual Basic
ComboBox1.DropDownStyle = ComboBoxStyle.DropDownList
Изменения кода для выбора последнего добавленного элемента в элементе управления ComboBox
В следующем примере кода демонстрируется способ выделения элемента, добавленного в элемент управления ComboBox программным путем:
' Visual Basic 6.0
Combo1.AddItem "This is a new item"
Combo1.ListIndex = Combo1.NewIndex
' Visual Basic
Dim i As Integer
i = ComboBox1.Items.Add("This is a new item")
ComboBox1.SelectedIndex = i
Изменения кода Private Sub для связывания ItemData
В следующем примере кода демонстрируется способ связывания номера служащего с каждым служащим, перечисленным в элементе управления ComboBox, с последующим извлечением этого номера во время выполнения:
' Visual Basic 6.0
Private Sub Form_Load
Combo1.AddItem "Nancy Davolio"
Combo1.ItemData(Combo1.NewIndex) = 12345
Combo1.AddItem "Judy Phelps"
Combo1.ItemData(Combo1.NewIndex) = 67890
End Sub
Private Sub Combo1_Click()
Label1.Caption = "Empoyee #" & _
CStr(Combo1.ItemData(Combo1.ListIndex))
End Sub
' Visual Basic
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles MyBase.Load
ComboBox1.Items.Add("Nancy Davolio")
Microsoft.VisualBasic.Compatibility.VB6. _
SetItemData(ComboBox1, ComboBox1.Items.Count() - 1, 12345)
ComboBox1.Items.Add("Judy Phelps")
Microsoft.VisualBasic.Compatibility.VB6. _
SetItemData(ComboBox1, ComboBox1.Items.Count() - 1, 67890)
End Sub
' Visual Basic
Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
Label1.Text = "Employee #" & CStr( _
Microsoft.VisualBasic.Compatibility.VB6. _
GetItemData(ComboBox1, ComboBox1.SelectedIndex))
End Sub
Эквиваленты свойств, методов и событий элемента управления ComboBox
В следующей таблице приведен список свойств, методов и событий Visual Basic 6.0 с их эквивалентами в Visual Basic 2008. Свойства, методы и события, имена и поведение которых остались без изменения, не указываются. Константы, если используются, расположены под свойством или методом с отступом. Если не указано иное, все перечисления Visual Basic 2008 сопоставлены пространству имен System.Windows.Forms.
В этой таблице содержатся ссылки на разделы, в которых объясняются различия в поведении. Если нет прямого эквивалента в Visual Basic 2008, приводятся ссылки на разделы, содержащие альтернативные решения.
Свойства
Visual Basic 6.0 |
Эквивалент Visual Basic 2008 |
---|---|
Appearance |
Новая реализация. Дополнительные сведения см. в разделе Свойства Appearance и BorderStyle (для пользователей Visual Basic 6.0). |
BackColor |
Примечание.
Обработка цветов отличается в Visual Basic 2008. Дополнительные сведения см. в разделе Действие цветов (для пользователей Visual Basic 6.0).
|
Container |
|
DataChanged DataField DataFormat DataMember DataSource |
Новая реализация. Дополнительные сведения см. в разделе Элемент управления Data для пользователей Visual Basic 6.0. |
DragIcon DragMode |
Новая реализация. Дополнительные сведения см. в разделе Действие перетаскивания для пользователей Visual Basic 6.0. |
Font FontBold FontItalic FontName FontSize FontStrikethrough FontUnderline |
Примечание.
Обработка шрифтов отличается в Visual Basic 2008. Дополнительные сведения см. в разделе Обработка шрифтов для пользователей Visual Basic 6.0.
|
ForeColor |
Примечание.
Обработка цветов отличается в Visual Basic 2008. Дополнительные сведения см. в разделе Действие цветов (для пользователей Visual Basic 6.0).
|
Height |
Примечание.
Обработка координат отличается в Visual Basic 2008. Дополнительные сведения см. в разделе Система координат (для пользователей Visual Basic 6.0).
|
HelpContextID |
Новая реализация. Дополнительные сведения см. в разделе Поддержка справки (для пользователей Visual Basic 6.0). |
HWnd |
|
Index |
Новая реализация. Дополнительные сведения см. в разделе Массивы элементов управления для пользователей Visual Basic 6.0. |
ItemData |
Новая реализация. Дополнительные сведения см. в разделе Возможность обновления свойства ItemData отсутствует. |
Left |
Примечание.
Обработка координат отличается в Visual Basic 2008. Дополнительные сведения см. в разделе Система координат (для пользователей Visual Basic 6.0).
|
List |
|
ListCount |
|
ListIndex |
|
Locked |
Примечание.
В Visual Basic 6.0 установка свойства Locked равным True также предотвращает изменение выделения выбранного элемента. В Visual Basic 2008 можно воссоздать такое поведение при помощи отмены выбора в событии MouseDown.
|
MouseIcon |
Новая реализация. Дополнительные сведения см. в разделе Невозможно задать настраиваемый указатель мыши MousePointer. |
MousePointer |
Список констант см. в разделе Свойство MousePointer (для пользователей Visual Basic 6.0). |
NewIndex |
Новая реализация. Дополнительные сведения см. в разделе Свойство NewIndex обновить невозможно. |
OLEDragMode |
Новая реализация. Дополнительные сведения см. в разделе Действие перетаскивания для пользователей Visual Basic 6.0. |
OLEDropMode |
Новая реализация. Дополнительные сведения см. в разделе Действие перетаскивания для пользователей Visual Basic 6.0. |
Parent |
Метод FindForm |
RightToLeft |
|
SelLength |
|
SelStart |
|
SelText |
|
Style |
|
ToolTipText |
Компонент ToolTip Дополнительные сведения см. в разделе Поддержка подсказок (для пользователей Visual Basic 6.0). |
Top |
Примечание.
Обработка координат отличается в Visual Basic 2008. Дополнительные сведения см. в разделе Система координат (для пользователей Visual Basic 6.0).
|
TopIndex |
Новая реализация. Дополнительные сведения см. в разделе Свойство TopIndex и событие Scroll для пользователей Visual Basic 6.0. |
WhatsThisHelpID |
Новая реализация. Дополнительные сведения см. в разделе Поддержка справки (для пользователей Visual Basic 6.0). |
Width |
Примечание.
Обработка координат отличается в Visual Basic 2008. Дополнительные сведения см. в разделе Система координат (для пользователей Visual Basic 6.0).
|
Методы
Visual Basic 6.0 |
Эквивалент Visual Basic 2008 |
---|---|
AddItem |
|
Clear |
|
Drag |
Новая реализация. Дополнительные сведения см. в разделе Действие перетаскивания для пользователей Visual Basic 6.0. |
Move |
Примечание.
Обработка координат отличается в Visual Basic 2008. Дополнительные сведения см. в разделе Система координат (для пользователей Visual Basic 6.0).
|
OLEDrag |
|
RemoveItem |
Items.Remove |
SetFocus |
|
ShowWhatsThis |
Новая реализация. Дополнительные сведения см. в разделе Поддержка справки (для пользователей Visual Basic 6.0). |
ZOrder |
Функции BringToFront, SendToBack |
События
Visual Basic 6.0 |
Эквивалент Visual Basic 2008 |
---|---|
Change |
Примечание.
Поведение события TextChanged незначительно отличается. Дополнительные сведения см. в разделе Событие Change элемента управления ComboBox для пользователей Visual Basic 6.0.
|
Click |
|
DblClick |
Новая реализация. Используйте события SelectedIndexChanged или TextChanged. |
DragDrop DragOver |
Новая реализация. Дополнительные сведения см. в разделе Действие перетаскивания для пользователей Visual Basic 6.0. |
GotFocus |
|
LostFocus |
|
OLECompleteDrag OLEDragDrop OLEDragOver OLEGiveFeedback OLESetData OLEStartDrag |
Новая реализация. Дополнительные сведения см. в разделе Действие перетаскивания для пользователей Visual Basic 6.0. |
Scroll |
Новая реализация. Дополнительные сведения см. в разделе Свойство TopIndex и событие Scroll для пользователей Visual Basic 6.0. |
Validate |
Замечания по обновлению
При обновлении проекта Visual Basic 6.0 до версии Visual Basic 2008 событие Change элемента управления ComboBox сопоставляется с событием TextChanged элемента управления ComboBox в Visual Basic 2008. Поведение события TextChanged отличается от поведения события Change; это различие может привести к непредвиденным результатам при выполнении кода.
Код, обращающийся к свойствам ItemData, Locked, NewIndex или TopIndex, а также код в процедуре события Scroll не обновляются. Комментарии предупреждения добавляются в код, и перед компиляцией приложения код должен быть изменен или удален.
См. также
Основные понятия
Действие цветов (для пользователей Visual Basic 6.0)
Объект Font (для пользователей Visual Basic 6.0)
Свойство MousePointer (для пользователей Visual Basic 6.0)
Поддержка подсказок (для пользователей Visual Basic 6.0)
Ссылки
Общие сведения об элементе управления ComboBox (Windows Forms)