参数 'Expression' 无法转换为类型 'ObjectCollection'

Argument 'Expression' cannot be converted to type 'ObjectCollection'

我是 VB 的新手,正在尝试划分两个列表框的内容。但是每次我尝试都会出现错误,例如;参数 'Expression' 无法转换为类型 'ObjectCollection'。我一直在更改代码,但此后一直没有运气。如果有任何帮助,我将不胜感激!

    Dim pSmokers As Short
    pSmokers = (Val(lstSmoker.Items)) / (Val(lstTotal.Items)) * 100
    lstTotal.Items.Add(pSmokers)

假设lstSmokerlistBox,你没有正确使用它。这行不通

Val(lstSmoker.Items)

你需要做这样的事情

Short.Parse(lstSmoker.Items(0)) ' Where "0" is index of your item in listbox

同样,这是假设您在列表控件中的项目是字符串。所以你的代码看起来像这样:

pSmokers = Short.Parse(lstSmoker.Items(0)) / Short.Parse(lstTotal.Items(0)) * 100

很遗憾,我不知道您如何将数据保存在列表中。可能您想要计算列表中的项目数而不是数据。然后这样做

pSmokers = lstSmoker.Items.Count / lstTotal.Items.Count * 100

!!! 但是现在你 运行 遇到了问题,如果 pSmokers 很短,你在这里有一个除法。意思是,你会得到十进制数。因此,您需要更改 pSmokers

的数据类型

如果没有吸烟者,您也可以 运行 解决除以“0”的问题。为了防止它

If lstTotal.Items.Count > 0 Then
    Dim pSmokers as Decimal = lstSmoker.Items.Count / lstTotal.Items.Count * 100
    txtTotal.text= pSmokers.ToString("G")
End If