【发布时间】:2020-09-25 10:49:48
【问题描述】:
我正在使用 webclient 的 DownloadProgressChanged 事件在列表视图中显示下载文件的下载百分比。
当我在标签中显示“Overallpercent”时,代码工作得非常好,但它给了我“System.NullReferenceException:'对象引用未设置为对象的实例。'”如果我尝试显示相同的循环,则在几个循环后出现错误在列表视图中。
我的更改列表视图子项的代码如下
Private Sub downloadprogressruntimemade(currentimage As Integer, totalimages As Integer, li As ListViewItem, indexnumberforlv As Integer, ByVal sender As Object, ByVal e As DownloadProgressChangedEventArgs)
Dim li1 As ListViewItem = li
Dim overallpercent = Math.Round((currentimage / totalimages) * 100, 2) + Math.Round(e.ProgressPercentage / 1 / totalimages, 2)
li1.SubItems.Insert(indexnumberforlv, New ListViewItem.ListViewSubItem(Nothing, overallpercent & " %"))
refreshcontrol(LVsessionnotfound)
End Sub
我在这里错过了什么?
【问题讨论】:
-
ListViewSubItem 构造函数的第一个参数不能是Nothing。而是通过 li1 。不是这段代码中唯一的错误,重复插入没有意义。
-
为什么将
li重新声明为li1?另外,我建议您设置断点以查看哪个变量在它不能为 Nothing 时为 Nothing。这应该可以帮助您找到根本原因。 -
@HansPassant 除了不插入还有其他方法吗?我想将值更新为较新的值(例如将 57% 更改为 63%)。我不是硬代码开发人员,所以我对此知之甚少。
-
@Audiopolis 我之前并没有重新声明它,但是当我开始出错时,我想这样做..我知道这没有意义..但是由于这个正在进行更改 weblclient 处理程序的事件,它不断获得更新的值,所以我想这样做。我的断点始终打开,但除了与 listview 相关之外,我找不到任何东西,因为相同的代码适用于 label 而不是 listview
-
@HansPassant,你能帮我找出代码中的任何其他错误吗?从长远来看,这将对我有所帮助。另外,如果您指的是,我已将总体百分比指定为小数。。