您的位置:首页 > 编程语言 > VB

将 Visual Basic 6.0 项目升级到 Visual Basic .NET ItemData 属性

2007-08-27 18:22 811 查看
PRB: ListBox 和 ComboBox 控件不存在 ItemData 属性

本文的发布号曾为 CHS311340
本页

症状

解决方案

状态

更多信息

复现行为的步骤

生成一个用来升级的 Visual Basic 6.0 示例

将 Visual Basic 6.0 项目升级到 Visual Basic .NET

在 Visual Basic .NET 中生成新项目

参考
症状
您可能已注意到以下症状: • 在将 Microsoft Visual Basic 6.0 项目升级到 Visual Basic .NET 时,ItemData 属性的“属性”窗口中列出的数据被丢弃。
• 在 Visual Basic 6.0 中,可在设计时通过“属性”窗口为 ListBox 或 ComboBox 控件设置 ItemData 属性。 在 Visual Basic .NET 中,这些控件不再存在 ItemData 属性。

回到顶端
解决方案
若要解决此问题,请使用以下方法之一: • 如果您将项目从 Visual Basic 6.0 升级到了 Visual Basic .NET,请使用 VB6.SetItemData 方法(在 Visual Basic 6.0 兼容库中)来填充该列表。 此方法通常在窗体的构造函数(Public Sub New 过程)中被调用。
• 对于新的 Visual Basic .NET 项目,请使用类来保存列表项。 有关更多信息,请参阅“更多信息”一节。

回到顶端
状态
这种现象是设计使然。

回到顶端
更多信息
复现行为的步骤
生成一个用来升级的 Visual Basic 6.0 示例1. 在 Visual Basic 6.0 中新建一个标准 EXE 项目。默认情况下将创建 Form1。
2. 将一个 ListBox 控件和一个 Label 控件添加到 Form1 中。
3. 选择该 ListBox 控件。 在 ListBox 控件的“属性”窗口中,单击 List Property,然后添加以下各项。 按 CTRL+ENTER 组合键以移至下一项。
Carol Philips
Jim Kim
Jossef Goldberg
Patricia Doyle
4. 单击 ListBox 控件的 ItemData 属性,然后添加下列值:
1001
1002
1004
1005
5. 右键单击 Form1,然后单击查看代码。 将以下代码添加到 ListBox 控件的 Click 事件过程中:
Private Sub List1_Click()
Dim Msg As String
'Add the employee number and the employee name.
Msg = List1.ItemData(List1.ListIndex) & " "
Msg = Msg & List1.List(List1.ListIndex)
Label1.Caption = Msg
End Sub
6. 保存项目。
7. 在运行菜单上,单击启动以运行您创建的项目。 确保项目能无错误地运行。
8. 保存任何更改,然后关闭 Visual Basic 环境。

将 Visual Basic 6.0 项目升级到 Visual Basic .NET 1. 启动 Microsoft Visual Studio .NET。
2. 在项目菜单上,指向文件,然后单击打开。 选择在上一节中保存的 .vbp 文件,然后单击确定。
3. 按照屏幕上的说明升级项目。
4. 在完成升级时,转到 Form1 的“代码”窗口。 如果“代码”窗口不可用,请在解决方案资源管理器中右键单击 Form1,然后单击查看代码。

请注意,Visual Basic 6.0 应用程序中的 Click 事件过程代码已转换为 Visual Basic .NET 中 ListBox 控件的 SelectedIndexChanged 事件。 现在,检索 ItemData 信息的代码形式如下(或类似下面的代码):
'UPGRADE_WARNING: Event List1.SelectedIndexChanged may fire when form is initialized.
'Click for more: ms-help://MS.VSCC/commoner/redir/redirect.htm?keyword="vbup2075"'
Private Sub List1_SelectedIndexChanged(ByVal eventSender As _
System.Object, ByVal eventArgs As System.EventArgs) Handles _
List1.SelectedIndexChanged
Dim Msg As String
'Add the employee number and the employee name.
Msg = VB6.GetItemData(List1, List1.SelectedIndex) & " "
Msg = Msg & VB6.GetItemString(List1, List1.SelectedIndex)
Label1.Text = Msg
End Sub
备注: 此代码不需要进行任何更改。 不过,您可以将 VB6.GetItemString 方法替换为如下所示的 Visual Basic .NET 语法:
Msg = Msg & List1.Items(List1.SelectedIndex).ToString
5. 必须使用 SetItemData 方法来添加 ItemData,然后才能成功运行此应用程序。 为此,请单击展开“Windows 窗体设计器生成的代码”,然后单击展开 Public Sub New 方法(如果它尚未显示的话)。
6. 将以下代码添加到 Sub New 过程中的 InitializeComponent 语句之后:
VB6.SetItemData(List1, 0, 1001)
VB6.SetItemData(List1, 1, 1002)
VB6.SetItemData(List1, 2, 1004)
VB6.SetItemData(List1, 3, 1005)
7. 保存项目。在调试菜单上,单击启动以运行您的项目。
8. 单击列表框中的任何项。 您会注意到 ListBox 的 ItemData 属性出现,Employee Name 位于 Label 控件中。

备注: 如果您在 Visual Basic 6.0 项目中以编程方式添加了 ItemData 和 ListItems,则升级后的 Visual Basic .NET 项目在 Form_Load 过程中使用以下语法,用 ItemData 来填充 ListItems:
List1.Items.Add(New VB6.ListBoxItem("Carol Philips", 1001))

回到顶端
在 Visual Basic .NET 中生成新项目1. 新建一个 Visual Basic .NET Windows 应用程序项目。Form1 在默认情况下被添加到项目中。
2. 将 ComboBox 和 Label 控件放到 Form1 上。
3. 在解决方案资源管理器中,右键单击“项目名”,指向添加,然后单击添加类。 确保 Visual Basic 类被突出显示。
4. 将该类重命名为 MyList.vb,然后单击确定。
5. 将以下代码添加到 MyList 类的“代码”窗口的 Public Class MyList 部分中:
Private sName As String
Private iID As Integer 'You can also declare this as String.

Public Sub New()
sName = ""
iID = 0
End Sub

Public Sub New(ByVal Name As String, ByVal ID As Integer)
sName = Name
iID = ID
End Sub

Public Property Name() As String
Get
Return sName
End Get

Set(ByVal sValue As String)
sName = sValue
End Set
End Property

Public Property ItemData() As Integer
Get
Return iID
End Get

Set(ByVal iValue As Integer)
iID = iValue
End Set
End Property

Public Overrides Function ToString() As String
Return sName
End Function
6. 在解决方案资源管理器中,双击 Form1.vb 以打开 Form1 的“设计”窗口。
7. 双击该窗体以转到 Form1_Load 过程,然后将以下代码添加到 Form1_Load 过程中:
With ComboBox1
.Items.Add(New MyList("Carol Philips", 101))
.Items.Add(New MyList("Jim Kim", 102))
.Items.Add(New MyList("Jossef Goldberg", 103))
.Items.Add(New MyList("Patricia Doyle", 104))
.SelectedIndex = 0 'Set first item as selected item.
End With
8. 在解决方案资源管理器中,双击 Form1.vb 以打开 Form1 的“设计”窗口。
9. 双击 ComboBox1 控件,然后将以下代码添加到 ComboBox1_SelectedIndexChanged 过程中:
Dim mList As MyList
mList = ComboBox1.Items(ComboBox1.SelectedIndex)
'In the following statement, you can either use mList.ToString or
'mList.Name. They both return the Name property.
Label1.Text = mList.ItemData & " " & mList.Name
'Alternately, you can use the following syntax.
'Label1.Text = ComboBox1.Items(ComboBox1.SelectedIndex).ItemData _
' & " " & ComboBox1.Items(ComboBox1.SelectedIndex).ToString
10. 保存项目。在调试菜单上,单击启动以运行该项目。
11. 选择组合框中的任何项。 您会注意到 ComboBox 控件的 ItemData 属性出现,Employee Name 位于 Label 控件中。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: