无法将对象类型System.Decimal转换为排序列表框中的System.String

时间:2018-10-16 02:36:04

标签: c# winforms windows-forms-designer

因此,我试图运行Windows窗体,该窗体是从numericUpDown框(从WindowsForm)中添加一个数字,并将其放在列表框中的(我的代码可以完成)。列表框中的示例:

7 5 10 1

,当您单击排序时,它应按以下顺序产生:

1 5 7 10

运行代码并单击排序按钮(button1)对列表框中的整数进行排序时,我得到:

“ System.InvalidException:”无法将类型为'System.Decimal'的对象转换为类型为'System.String'。

我不确定这是什么意思。...

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace ListBoxSorter
{
    public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

        private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            //int num = (int)listBox1.Items[0];
            //listBox1.Items.Add(num);


        }

        private void numericUpDown1_ValueChanged(object sender, EventArgs e)
        {
            //int number = (int)numericUpDown1.Value;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //listBox1.Items.Sort(numericUpDown1.Value);

            List<int> ListB = new List<int>();

            foreach (string x in listBox1.Items)
            {
                ListB.Add(Convert.ToInt32(x));
            }
            ListB.Sort();
        }



        private void button2_Click(object sender, EventArgs e)
        {
            listBox1.Items.Add(numericUpDown1.Value);
        }
    }
}

1 个答案:

答案 0 :(得分:1)

尝试以下操作:(未经编译或调试)

private void button1_Click(object sender, EventArgs e)
{
    List<int> ListB = new List<int>();

    foreach (string x in listBox1.Items)
    {
        ListB.Add(Convert.ToInt32(x));
    }

    ListB.Sort();

    listBox1.Items.Clear() //important!

    foreach (int x in ListB)
    {
        listBox1.Items.Add(x.ToString());
    }
}