C# 将combobox与item一起使用并将itemdata保留为sortedlist类型时的排序问题

C# 将combobox与item一起使用并将itemdata保留为sortedlist类型时的排序问题,c#,.net,sorting,combobox,sortedlist,C#,.net,Sorting,Combobox,Sortedlist,我有一个项目,保持项目和itemdata(数字)与排序的原因。 我有两个目标: 1.保存项目(名称)的已排序组合框 2.sortedlist将项目(名称)保留为键,将项目数据(编号)保留为值 由于某些原因,某些字符(例如“-”)在组合框和sortedlist中的排序方式不同。组合框将字符串保留在第一行或组中,而sortedlist中的字符串位于组的最后一行。 这是我的代码: public partial class Form1: Form { public Form1() {

我有一个项目,保持项目和itemdata(数字)与排序的原因。 我有两个目标: 1.保存项目(名称)的已排序组合框 2.sortedlist将项目(名称)保留为键,将项目数据(编号)保留为值

由于某些原因,某些字符(例如“-”)在组合框和sortedlist中的排序方式不同。组合框将字符串保留在第一行或组中,而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;
}
公共部分类表单1:表单
{
公共表格1()
{
初始化组件();
}
SortedList sortedvbcombo=新SortedList();
私有void Form1\u加载(对象发送方、事件参数e)
{
数据[]D=新数据[5];
D[0]=新数据();
D[0]。name=“BABA”;
D[0],数量=1000;
D[1]=新数据();
D[1]。name=“B-REAL”;
D[1],编号=1001;
D[2]=新数据();
D[2].name=“BCCDC”;
D[2],编号=1002;
D[3]=新数据();
D[3].name=“baaaa”;
D[3],编号=1003;
D[4]=新数据();
D[4].name=“BFFFFDS”;
D[4],编号=1004;
comboBox1.Sorted=true;
对于(int i=0;i
组合框的结果: B-真实 巴阿 爸爸 BCCDC BFFFFDS

sortedlist的结果如下: 巴阿 爸爸 BCCDC BFFFFDS B-真实 为什么不以相同的方式进行排序,以及是否可以将其与sortedlist属性对齐? p、 s我知道有一些使用的可能性

sortedlist<object,object> srt = new sortedlist<object,object>(idictionary)
sortedlist srt=新的sortedlist(idictionary)

但是我找不到实现它的方法

目前我找到的一个解决方案(尽管我认为combobox排序不正确)是将数据编码到sortlist

    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);
    }
for(int i=0;i

排序列表或组合框排序有更聪明的方法吗?

主要问题是为什么组合框排序和排序列表排序之间存在差异,以及我们如何将其对齐