我有一个项目,保持项目和项目数据(数字)与排序的原因。 我有2个对象: 1.sorted combobox保留项目(名称) 2.sortedlist,将项目(名称)保持为关键,将itemdata(数字)保持为值。
由于某种原因,某些字符(例如" - ")在组合和sortedlist中的排序方式不同。该组合保持字符串为" - "在排序列表中的第一行或组中,它位于组的最后一行。 这是我的代码:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
SortedList<object, object> sortedvbcombo = new SortedList<object, object>();
private void Form1_Load(object sender, EventArgs e)
{
Data[] D = new Data[5];
D[0] = new Data();
D[0].name = "BABA";
D[0].number = 1000;
D[1] = new Data();
D[1].name = "B-REAL";
D[1].number = 1001;
D[2] = new Data();
D[2].name = "BCCDC";
D[2].number = 1002;
D[3] = new Data();
D[3].name = "BAAAAA";
D[3].number = 1003;
D[4] = new Data();
D[4].name = "BFFFFDS";
D[4].number = 1004;
comboBox1.Sorted = true;
for (int i = 0; i < D.Count(); i++)
{
comboBox1.Items.Add(D[i].name);
sortedvbcombo.Add(D[i].name, D[i].number);
}
}
}
struct Data
{
public string name;
public int number;
}
组合框的结果: B-REAL BAAAAA BABA BCCDC BFFFFDS
sortedlist的结果: BAAAAA BABA BCCDC BFFFFDS B-REAL 为什么它不以相同的方式排序,如果它可以将它与sortedlist属性对齐? p.s我知道有一些使用的可能性
sortedlist<object,object> srt = new sortedlist<object,object>(idictionary)
但我无法找到实现它的方法
答案 0 :(得分:0)
我现在发现的一个解决方案(即使我认为组合框排序不正确)是通过将数据编码到排序列表
for (int i = 0; i < D.Count(); i++)
{
comboBox1.Items.Add(D[i].name);
byte[] encbuff = System.Text.Encoding.UTF8.GetBytes(D[i].name);
sortedvbcombo.Add(Convert.ToBase64String(encbuff), D[i].number);
}
使用sortlist还是使用组合框排序有更聪明的方法吗?