【发布时间】:2014-04-02 19:54:36
【问题描述】:
我目前正在做一个我已经做了几个月的项目。即将发布包含书签的第 2 版。为了存储这些书签,我使用了项目属性中的设置菜单。我创建了两个System.Collections.Specialized.StringCollection,一个叫做“BookmarkNames”,另一个叫做“BookmarkAddresses”。我的应用程序菜单栏中的下拉菜单中有一个带有书签按钮的菜单。这些是在启动时通过使用 for-next 循环遍历集合来添加的。为了测试它,我让它每个添加 2 个项目。在添加按钮之前,我将“Bing”和“Google”添加到My.Settings.BookmarkNames,并将它们各自的地址添加到My.Settings.BookmarkAddresses。我注意到当它完成启动时,它只添加了一个名为“Bing”的按钮。单击该按钮确实转到了 Bing 站点,所以它一定做对了。但是,它已经跳过了谷歌。为了查看发生了什么,我在 for-next 循环的末尾添加了一个简单的 Console.PrintLine()。这将打印它当前在 BookmarkNames 集合中的项目,因此它应该打印两行:“Google”和“Bing”。但是,它会打印每个随机数,有时会说“Google”5 次,然后在“Google”和“Bing”之间交替显示。
我的问题很简单:额外重复值的原因是什么?为什么要添加和打印它们?我可以自己弄清楚整个“创建一个按钮”的问题,只要我能弄清楚那里发生了什么。
有问题的代码是:
'WRE: This loads the bookmarks into the bookmarks menu.
My.Settings.BookmarksNames.Add("Google")
My.Settings.BookmarksAddresses.Add("http://www.google.com/")
My.Settings.BookmarksNames.Add("Bing")
My.Settings.BookmarksAddresses.Add("http://www.bing.com/")
If My.Settings.BookmarksAddresses.Count > 0 Then
For counter As Integer = 0 To My.Settings.BookmarksAddresses.Count - 1
bmb.Text = My.Settings.BookmarksNames.Item(counter)
bmb.bookmarkURL = My.Settings.BookmarksAddresses.Item(counter)
but_Bmarks.DropDownItems.Add(bmb)
Console.WriteLine(My.Settings.BookmarksNames.Item(counter))
Next
Else
...
End If
【问题讨论】:
-
在此处添加您的代码。它很小,没有理由将其放在外部站点上
-
如果 Count 为 0,则 For 循环中多余的 If 语句将自动不循环。
-
@OlivierJacot-Descombes 这只是因为我要添加一个 Else 语句,它会在菜单中添加一个字符串,表明它是空的。
-
好的,我添加了一个 Else-part。
-
@OlivierJacot-Descombes 谢谢。
标签: .net vb.net collections