【发布时间】:2019-02-17 23:04:04
【问题描述】:
我无法从字典中删除数据。当单击Delete Library 按钮时,我希望从字典中删除列表框中突出显示的任何数据。删除后,它将使用更新的字典重新填充列表。
Public Class frmManager
Dim Libraries As New SortedDictionary(Of String, String)
Private Sub frmManager_Load(sender As Object, e As EventArgs) Handles Me.Load
Libraries.Add("SVSU", "Zahnow Library")
Libraries.Add("BR", "Fleschner Memorial Library")
Libraries.Add("SDJ", "Scott D. James Technical Repository")
populatelstLibrary()
End Sub
Sub populatelstLibrary()
For Each library In Libraries
lstLibraries.Items.Add(vbCrLf & library.Value & " --- " & library.Key)
Next
End Sub
Private Sub btnDeleteLibrary_Click(sender As Object, e As EventArgs) Handles btnDeleteLibrary.Click
Dim key As String = ""
If lstLibraries.SelectedValue IsNot Nothing Then
For Each library In Libraries
key = library.Key
If lstLibraries.SelectedValue.Equals(key) Then
Libraries.Remove(key)
End If
Next
lstLibraries.Items.Clear()
populatelstLibrary()
End If
End Sub
End Class
【问题讨论】:
-
一方面,如果
Libraries.Remove(lstLibraries.SelectedValue)甚至编译你必须有Option Strict Off,所以把它转为On并修复得到标记的错误。 -
您是否检查过
SelectedValue的值是否与Dictionary中的某个键匹配?根据您的代码,我看不出它怎么可能,所以没有任何内容被删除也就不足为奇了。 -
另外,在
ListBox中的每个项目前添加换行符有什么意义?这不是TextBox。无论如何,每个项目都显示在自己的行上,那么换行符可能有什么用途? -
你是对的,换行符没有意义,现在被删除了。但是,在转
Option Strict On之后,我仍然没有收到任何错误。 -
我应该如何查看
SelectedValue是否匹配某个键?我应该通过字典执行for loop,然后在循环内执行if statement以检查是否等于删除它的键?
标签: vb.net dictionary