我在文本框中输入了数字并将它们添加到了listBox中。现在我需要订购该列表框。这是我的尝试:
int[] array = listBox1.Items.Cast<int>().ToArray<int>();
Array.Sort(array);
listBox1.Items.Clear();
foreach (int item in array)
{
listBox1.Items.Add(item);
}
抛出'System.InvalidCastException'。但我无法弄清楚如何解决它。
答案 0 :(得分:0)
这就像
一样简单listBox1.Sorted = true;
<强>更新强>
var array = new object[listBox1.Items.Count];
listBox1.Items.CopyTo(array, 0);
listBox1.Items.Clear();
var sortedArray = array.Select(n => (object)Convert.ToInt32(n)).OrderBy(n => n).ToArray();
listBox1.Items.AddRange(sortedArray);
答案 1 :(得分:0)
您可以使用lambda
var array = listBox1.Items.OfType<string>().Select(x => int.Parse(x))
.ToArray();
答案 2 :(得分:0)
首先,我想说在控件中存储数据不是一个好主意。始终将数据放在可以处理它们的类型中,如List,Dictionary等,然后将其绑定到listbox对象。我想你正在开发Windows窗体。然后在表单中添加一个属性并将所有数据放入其中。
类似这样的事情
public partial class Form1 : Form
{
List<string> _items = new List<string>(); // <-- Add this
public Form1()
{
InitializeComponent();
_items.Add("One"); // <-- Add these
_items.Add("Two");
_items.Add("Three");
listBox1.DataSource = _items;
}
public void add()
{
_items.Add("four");
_items.Sort();
}
}
答案 3 :(得分:0)
ListBox项目可以转换为字符串。因此,您必须将其强制转换为string [],然后转换为int [],然后对其进行排序,最后将已排序的数据添加到ListBox。
string[] strArray = listBox1.Items.Cast<string>().ToArray();
int[] intArray = strArray.Select(x => int.Parse(x)).ToArray();
Array.Sort(intArray);
listBox1.Items.Clear();
foreach (int item in intArray)
{
listBox1.Items.Add(item);
}
我希望这会有用。