【问题标题】:Changing Download Percent in Listview in VB.Net在 VB.Net 的 Listview 中更改下载百分比
【发布时间】: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,你能帮我找出代码中的任何其他错误吗?从长远来看,这将对我有所帮助。另外,如果您指的是,我已将总体百分比指定为小数。。

标签: vb.net listview webclient


【解决方案1】:

我想我发现了这个错误,感谢@Hans Passant 提到插入是错误的方法。我将插入更改为li.SubItems(1).Text = overallpercent & " %",效果很好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-23
    • 1970-01-01
    • 2018-08-03
    • 1970-01-01
    相关资源
    最近更新 更多