Невозможно привести объект типа System.Decimal к типу System.String из списка сортировки. - PullRequest
0 голосов
/ 16 октября 2018

Так что я пытаюсь запустить форму 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 голосов
/ 16 октября 2018

Попробуйте: (не скомпилировано и не отлажено)

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());
    }
}
...