【问题标题】:VB.net Can't get output to appear in my listbox. Beginners QuestionVB.net 无法让输出出现在我的列表框中。初学者问题
【发布时间】:2009-03-11 02:00:12
【问题描述】:

试图让用户在 3 个文本框中输入 3 个数字并取平均值。

Private Sub btnAverage_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAverage.Click

  Dim a As Integer = CInt(txtone.Text)        
  Dim b As Integer = CInt(txtTwo.Text)
  Dim c As Integer = CInt(txtThree.Text)
  Dim average As Integer   
  average = (a + b + c) / 3

  lstOutput.Text = average

End Sub 

【问题讨论】:

  • @lagerdalek,你为什么不添加初学者标签?看起来这会使搜索更容易

标签: vb.net average


【解决方案1】:

尝试将平均类型从 Integer 更改为 Double

Dim average as Double

现在您正尝试将平均值存储在一个只能容纳整数的整数中。平均值往往是非整数,需要一种可以表示它的数据类型。双倍适用于大多数情况。那应该可以解决您的问题。

EDIT OP 提到 lstOutput 是一个 ListBox

这是 WinForms 令人困惑的事情之一。尽管每个控件都有一个 Text 属性,但并不是所有控件都真正做任何事情。它们仅适用于直接显示单个文本块或值的元素。例如按钮、标签等...

另一方面,ListBox 显示一组项目。您想将新项目添加到列表中。

lstOutput.Items.Add(average.ToString())

【讨论】:

  • 由于某种原因,当我单击按钮时,列表框中没有任何内容。
  • 这似乎已经解决了。感谢所有的帮助。 JaredPar FTW!
【解决方案2】:

列表框的Text 属性将获取或设置选定项。您尚未将平均值添加到列表框中。

试试:

lstOutput.Items.Add(average)

【讨论】:

    【解决方案3】:

    您确定 txtOne.text txtTwo.text 和 txtThree.txt 将始终是整数值吗?

    您可能还需要将 a、b、c 变量更改为 Doubles 并检查用户是否提供了非数字值。

    如果用户在 txtOne 文本框中输入“one”,您将收到异常 kablowee。

    (此处为空气编码)

       dim a as new double
       try
           if isnumeric(txtOne.text.tostring.trim) then
              a = cdbl(txtOne.text.tostring.trim)
           end if
    
        'repeat for b and c ...
    
        catch ex as exception
           messagebox.show(ex.message.tostring)
        end try
    

    而且,我不确定我是否正确,(也许有人会启发我)但是 .NET 在这两种情况下是否考虑从字符串到 int 的类型转换不同

    a  = cint(txtOne.text)
    

    a = cint(txtOne.text.tostring)
    

    ???

    【讨论】:

      猜你喜欢
      • 2023-03-17
      • 2013-06-28
      • 2015-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-20
      • 1970-01-01
      • 2020-02-07
      相关资源
      最近更新 更多