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 |
|
||
Container |
|||
DataChanged DataField DataFormat DataMember DataSource |
新的实现。有关更多信息,请参见 Data 控件(针对 Visual Basic 6.0 用户)。 |
||
DragIcon DragMode |
新的实现。有关更多信息,请参见拖放(针对 Visual Basic 6.0 用户)。 |
||
Font FontBold FontItalic FontName FontSize FontStrikethrough FontUnderline |
|
||
ForeColor |
|
||
Height |
|
||
HelpContextID |
新的实现。有关更多信息,请参见帮助支持(针对 Visual Basic 6.0 用户)。 |
||
HWnd |
|||
Index |
新的实现。有关更多信息,请参见控件数组(针对 Visual Basic 6.0 用户)。 |
||
ItemData |
新的实现。有关更多信息,请参见 无法升级 ItemData 属性。 |
||
Left |
|
||
List |
|||
ListCount |
|||
ListIndex |
|||
Locked |
|
||
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 |
|
||
TopIndex |
新的实现。有关更多信息,请参见 TopIndex 属性和 Scroll 事件(针对 Visual Basic 6.0 用户)。 |
||
WhatsThisHelpID |
新的实现。有关更多信息,请参见帮助支持(针对 Visual Basic 6.0 用户)。 |
||
Width |
|
方法
Visual Basic 6.0 |
Visual Basic 2008 等效项 |
||
---|---|---|---|
AddItem |
|||
Clear |
|||
Drag |
新的实现。有关更多信息,请参见拖放(针对 Visual Basic 6.0 用户)。 |
||
Move |
|
||
OLEDrag |
|||
RemoveItem |
Items.Remove |
||
SetFocus |
|||
ShowWhatsThis |
新的实现。有关更多信息,请参见帮助支持(针对 Visual Basic 6.0 用户)。 |
||
ZOrder |
事件
Visual Basic 6.0 |
Visual Basic 2008 等效项 |
||
---|---|---|---|
Change |
|
||
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 时,ComboBox 控件的 Change 事件将映射到 Visual Basic 2008ComboBox 控件的 TextChanged 事件。TextChanged 事件的行为不同于 Change 事件的行为,此差异可能会在代码中导致意外的结果。
任何引用 ItemData、Locked、NewIndex 或 TopIndex 属性的代码或 Scroll 事件过程中的代码都不升级;代码中将添加警告注释,在编译应用程序前,必须删除或修改这类代码。
请参见
概念
Font 对象(针对 Visual Basic 6.0 用户)
MousePointer(针对 Visual Basic 6.0 用户)
工具提示支持(针对 Visual Basic 6.0 用户)