ComboBox 控件(针对 Visual Basic 6.0 用户)

更新:2007 年 11 月

Visual Basic 6.0 中的 ComboBox 控件在 Visual Basic 2008 中由 Windows 窗体 ComboBox 控件所取代。某些属性、方法、事件和常量的名称是不同的,在某些情况下,行为也有所不同。

概念差异

Change 事件

在 Visual Basic 6.0 中,ComboBox 控件的 Change 事件在修改控件文本时引发。从控件的列表部分选择列表项时不引发 Change 事件。以编程方式更改列表项的文本不会引发 Change 事件。

Visual Basic 2008 中没有 Change 事件,无论出于任何原因对文本进行更改,都会引发 TextChanged 事件,例如:

  • 修改文本输入部分

  • 选择列表项

  • 以编程方式修改列表项

  • 调用 AddItem 方法

ItemData 属性

在 Visual Basic 6.0 中,可以在设计时在“属性”窗口中设置 ComboBox 控件的 ItemData 属性,以便将 Integer 与 ComboBox 项关联。

在 Visual Basic 2008 中,不再存在 ItemData 属性。Microsoft.VisualBasic.Compatibility 库包含一个 SetItemData 函数,该函数可用于将 Integer 与项关联;GetItemData 函数可用于检索该项。

Locked 属性

在 Visual Basic 6.0 中,ComboBox 控件的 Locked 属性确定是否可以编辑该控件的文本框部分。

在 Visual Basic 2008 中,Locked 属性可防止在设计时移动控件。Visual Basic 6.0 Locked 属性没有直接等效项;但是,可以通过将 ComboBox 控件的 DropDownStyle 属性设置为 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 属性没有可视效果,除非将“样式”属性设置为“1 - SimpleCombo”。这种情况下,可以使用 ListBox 控件和 TextBox 控件模拟此行为;ListBox 控件仍然支持 TopIndex 属性。

滚动事件

在 Visual Basic 6.0 中,Scroll 事件与 TopIndex 属性结合起来使用,以在滚动列表时执行操作。Visual Basic 2008 不支持 Scroll 事件;但在大多数情况下,使用 SelectedIndexChanged 事件替代应是合适的。

其他差异

此外,还有许多适用于所有控件的概念差异,包括数据绑定、字体处理、拖放操作、帮助支持等方面的差异。有关更多信息,请参见适用于 Visual Basic 6.0 用户的 Windows 窗体概念

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

关联 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

说明:

颜色在 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

说明:

字体在 Visual Basic 2008 中以不同方式处理。有关更多信息,请参见 字体处理(针对 Visual Basic 6.0 用户)

ForeColor

ForeColor

说明:

颜色在 Visual Basic 2008 中以不同方式处理。有关更多信息,请参见颜色行为(针对 Visual Basic 6.0 用户)

Height

Height, Size

说明:

坐标在 Visual Basic 2008 中以不同方式处理。有关更多信息,请参见坐标系统(针对 Visual Basic 6.0 用户)

HelpContextID

新的实现。有关更多信息,请参见帮助支持(针对 Visual Basic 6.0 用户)

HWnd

Handle

Index

新的实现。有关更多信息,请参见控件数组(针对 Visual Basic 6.0 用户)

ItemData

新的实现。有关更多信息,请参见 无法升级 ItemData 属性

Left

Left

说明:

坐标在 Visual Basic 2008 中以不同方式处理。有关更多信息,请参见 坐标系统(针对 Visual Basic 6.0 用户)

List

Items

ListCount

Count

ListIndex

SelectedIndex

Locked

DropDownStyle = DropDownList

说明:

在 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

说明:

坐标在 Visual Basic 2008 中以不同方式处理。有关更多信息,请参见坐标系统(针对 Visual Basic 6.0 用户)

TopIndex

新的实现。有关更多信息,请参见 TopIndex 属性和 Scroll 事件(针对 Visual Basic 6.0 用户)

WhatsThisHelpID

新的实现。有关更多信息,请参见帮助支持(针对 Visual Basic 6.0 用户)

Width

Width, Size

说明:

坐标在 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

说明:

坐标在 Visual Basic 2008 中以不同方式处理。有关更多信息,请参见坐标系统(针对 Visual Basic 6.0 用户)

OLEDrag

拖放(针对 Visual Basic 6.0 用户).

RemoveItem

Items.Remove

SetFocus

Focus

ShowWhatsThis

新的实现。有关更多信息,请参见帮助支持(针对 Visual Basic 6.0 用户)

ZOrder

BringToFrontSendToBack 函数

事件

Visual Basic 6.0

Visual Basic 2008 等效项

Change

TextChanged

说明:

TextChanged 事件的行为略有不同。有关更多信息,请参见 ComboBox 控件更改事件(针对 Visual Basic 6.0 用户)

Click

SelectedIndexChanged

DblClick

新的实现。请使用 SelectedIndexChangedTextChanged 事件。

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 时,ComboBox 控件的 Change 事件将映射到 Visual Basic 2008ComboBox 控件的 TextChanged 事件。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 窗体)