【问题标题】:Adding all values selected from the Listbox添加从列表框中选择的所有值
【发布时间】:2014-04-18 17:19:18
【问题描述】:

所以这就是我已经走了多远,我不太确定。 所以我用 1.2、1.3 等值填充了我的 listbox1 那么如何添加列表框的所有选定值并计算平均值? 如果您能帮助我,我将不胜感激。

    List<double> doubleList = new List<double>();
    private void btnGetAverage_Click(object sender, EventArgs e)
    {
        if (listBox1.SelectedIndex != -1)
        {
        }
    }

【问题讨论】:

    标签: c# listbox double average


    【解决方案1】:

    首先将列表框的 SelectionMode 属性设为 MultiSimple。然后试试这段代码。

        double total = 0;
        for (int i = 0; i < listBox1.SelectedItems.Count; i++)
        {
            total += Double.Parse(listBox1.SelectedItems[i].ToString());
        }
    
        MessageBox.Show("The average is: " + total / listBox1.SelectedItems.Count);
    

    【讨论】:

      【解决方案2】:

      你可以用平均法:

      List<double> doubleList = new List<double>();
      private void btnGetAverage_Click(object sender, EventArgs e)
      {
          if (listBox1.SelectedIndex != -1)
          {
             var myList = listbox1.SelectedItems as List<double>;
             return myList.Average();
          }
      }
      

      【讨论】:

      • listbox1 有错误在当前上下文中不存在并且返回有错误
      • 我假设您可以访问后面代码中的 listbox1,因为您已经在代码示例中检查了 SelectedIndex。我错了吗?
      • 我只是将这些值直接添加到 listBox1 中,因为我不知道如何将它们转换为 double 并从那里开始计算它们
      【解决方案3】:

      将您的双打列表添加到您的ListBox,如下所示:

      listBox1.DataSource = doubleList;
      

      那么这将为您获取仅选定项目的平均值:

      var average = listBox1.SelectedItems.Cast<double>().Average();
      

      【讨论】:

      • 从列表框中选择值后运行代码会中断
      • 如何破解?当我测试它时它工作正常。另外,listBox1 怎么不存在(阅读您对 Yuval 的评论)?您将其发布在自己的代码中,并且您没有说该部分引发了错误。
      • InvalidCastException 它为你的。不,我发布的代码没有抛出错误,他发布的代码中的 listbox1 抛出了错误。
      猜你喜欢
      • 1970-01-01
      • 2011-02-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-09
      • 1970-01-01
      • 1970-01-01
      • 2022-09-28
      相关资源
      最近更新 更多