Поделиться через


Элемент управления 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

BackColor

fte6kbt2.alert_note(ru-ru,VS.90).gifПримечание.
Обработка цветов отличается в Visual Basic 2008. Дополнительные сведения см. в разделе Действие цветов (для пользователей Visual Basic 6.0).

Container

Parent

DataChanged

DataField

DataFormat

DataMember

DataSource

Новая реализация. Дополнительные сведения см. в разделе Элемент управления Data для пользователей Visual Basic 6.0.

DragIcon

DragMode

Новая реализация. Дополнительные сведения см. в разделе Действие перетаскивания для пользователей Visual Basic 6.0.

Font

FontBold

FontItalic

FontName

FontSize

FontStrikethrough

FontUnderline

Font

fte6kbt2.alert_note(ru-ru,VS.90).gifПримечание.
Обработка шрифтов отличается в Visual Basic 2008. Дополнительные сведения см. в разделе Обработка шрифтов для пользователей Visual Basic 6.0.

ForeColor

ForeColor

fte6kbt2.alert_note(ru-ru,VS.90).gifПримечание.
Обработка цветов отличается в Visual Basic 2008. Дополнительные сведения см. в разделе Действие цветов (для пользователей Visual Basic 6.0).

Height

Height, Size

fte6kbt2.alert_note(ru-ru,VS.90).gifПримечание.
Обработка координат отличается в Visual Basic 2008. Дополнительные сведения см. в разделе Система координат (для пользователей Visual Basic 6.0).

HelpContextID

Новая реализация. Дополнительные сведения см. в разделе Поддержка справки (для пользователей Visual Basic 6.0).

HWnd

Handle

Index

Новая реализация. Дополнительные сведения см. в разделе Массивы элементов управления для пользователей Visual Basic 6.0.

ItemData

Новая реализация. Дополнительные сведения см. в разделе Возможность обновления свойства ItemData отсутствует.

Left

Left

fte6kbt2.alert_note(ru-ru,VS.90).gifПримечание.
Обработка координат отличается в Visual Basic 2008. Дополнительные сведения см. в разделе Система координат (для пользователей Visual Basic 6.0).

List

Items

ListCount

Count

ListIndex

SelectedIndex

Locked

DropDownStyle = DropDownList

fte6kbt2.alert_note(ru-ru,VS.90).gifПримечание.
В Visual Basic 6.0 установка свойства Locked равным True также предотвращает изменение выделения выбранного элемента. В Visual Basic 2008 можно воссоздать такое поведение при помощи отмены выбора в событии MouseDown.

MouseIcon

Новая реализация. Дополнительные сведения см. в разделе Невозможно задать настраиваемый указатель мыши MousePointer.

MousePointer

Cursor

Список констант см. в разделе Свойство MousePointer (для пользователей Visual Basic 6.0).

NewIndex

Новая реализация. Дополнительные сведения см. в разделе Свойство NewIndex обновить невозможно.

OLEDragMode

Новая реализация. Дополнительные сведения см. в разделе Действие перетаскивания для пользователей Visual Basic 6.0.

OLEDropMode

Новая реализация. Дополнительные сведения см. в разделе Действие перетаскивания для пользователей Visual Basic 6.0.

Parent

Метод FindForm

RightToLeft

RightToLeft

SelLength

SelectionLength

SelStart

SelectionStart

SelText

SelectedText

Style

DropDownStyle

ToolTipText

Компонент ToolTip

Дополнительные сведения см. в разделе Поддержка подсказок (для пользователей Visual Basic 6.0).

Top

Top

fte6kbt2.alert_note(ru-ru,VS.90).gifПримечание.
Обработка координат отличается в Visual Basic 2008. Дополнительные сведения см. в разделе Система координат (для пользователей Visual Basic 6.0).

TopIndex

Новая реализация. Дополнительные сведения см. в разделе Свойство TopIndex и событие Scroll для пользователей Visual Basic 6.0.

WhatsThisHelpID

Новая реализация. Дополнительные сведения см. в разделе Поддержка справки (для пользователей Visual Basic 6.0).

Width

Width, Size

fte6kbt2.alert_note(ru-ru,VS.90).gifПримечание.
Обработка координат отличается в Visual Basic 2008. Дополнительные сведения см. в разделе Система координат (для пользователей Visual Basic 6.0).

Методы

Visual Basic 6.0

Эквивалент Visual Basic 2008

AddItem

Add

AddRange

Insert

Clear

Clear

Drag

Новая реализация. Дополнительные сведения см. в разделе Действие перетаскивания для пользователей Visual Basic 6.0.

Move

SetBounds

fte6kbt2.alert_note(ru-ru,VS.90).gifПримечание.
Обработка координат отличается в Visual Basic 2008. Дополнительные сведения см. в разделе Система координат (для пользователей Visual Basic 6.0).

OLEDrag

Действие перетаскивания для пользователей Visual Basic 6.0.

RemoveItem

Items.Remove

SetFocus

Focus

ShowWhatsThis

Новая реализация. Дополнительные сведения см. в разделе Поддержка справки (для пользователей Visual Basic 6.0).

ZOrder

Функции BringToFront, SendToBack

События

Visual Basic 6.0

Эквивалент Visual Basic 2008

Change

TextChanged

fte6kbt2.alert_note(ru-ru,VS.90).gifПримечание.
Поведение события TextChanged незначительно отличается. Дополнительные сведения см. в разделе Событие Change элемента управления ComboBox для пользователей Visual Basic 6.0.

Click

SelectedIndexChanged

DblClick

Новая реализация. Используйте события SelectedIndexChanged или TextChanged.

DragDrop

DragOver

Новая реализация. Дополнительные сведения см. в разделе Действие перетаскивания для пользователей Visual Basic 6.0.

GotFocus

Enter

LostFocus

Leave

OLECompleteDrag

OLEDragDrop

OLEDragOver

OLEGiveFeedback

OLESetData

OLEStartDrag

Новая реализация. Дополнительные сведения см. в разделе Действие перетаскивания для пользователей Visual Basic 6.0.

Scroll

Новая реализация. Дополнительные сведения см. в разделе Свойство TopIndex и событие Scroll для пользователей Visual Basic 6.0.

Validate

Validating

Замечания по обновлению

При обновлении проекта 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)