【问题标题】:how to sum values entered by textbox in listbox?如何对列表框中文本框输入的值求和?
【发布时间】:2018-12-07 19:20:23
【问题描述】:

我有一个listbox1 和一个textbox1、textbox2 和textbox3。我试图在从 textbox1 传输时添加第一行中的所有值,并在从 textbox2 传输时添加第二行中的所有值。例如,如果我在列表框中两次传递 500,它应该添加两个 500 并在列表框 1 中变为 1000 并显示为项目 1000。对于 textbox2 也是如此。 textbox1 和 textbox 2 的值的总和应该显示在 textbox3 中。

我的代码在这里

If TextBox1.Text = "" Then Exit Sub

If e.KeyCode = Keys.Enter Then

    ListBox1.Items.Add(TextBox1.Text)
    Dim sum As Double
    For x As Integer = 0 To ListBox1.Items.Count - 1
        sum += CDbl(ListBox1.Items(x))

    Next
    TextBox3.Text = sum
    TextBox1.Text = ""
End If

【问题讨论】:

  • 什么不起作用?代码是否被调用?当前的总和不正确吗?
  • 代码有效。显示您的事件处理程序。将 Option Strict On 放在代码文件的顶部。
  • 代码有效,但没有在 lisbox 中求和。
  • 我在 textbox1 的 keyup 事件中尝试了这段代码并且工作正常。
  • “例如,如果我在列表框中两次传递 500,它应该添加两个 500 并在列表框 1 中变为 1000 并显示为项目 1000” - 什么???

标签: vb.net


【解决方案1】:

我在 textbox1 的 keyup 事件中尝试了这段代码并且工作正常。 但我建议你,而不是你的 for 循环,你可以使用这样的 linq 查询:

 TextBox3.Text =   (From m In ListBox1.Items
                    Select CDbl(m)).Sum

我认为这是对一组项目求和的更快方法。

【讨论】:

  • 这可以编译吗? ListBox1.Items 没有实现 IEnumerable<object>
  • @Enigmativity,仅必须确保将 system.linq 命名空间添加到项目中。我尝试了代码,它运行良好。你可以自己试试。
  • 我试过了,但失败了。你在用Option Strict On吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多