使用带有项目的组合框并将项目数据保持在排序列表类型时的排序问题

问题描述 投票:0回答:1

我有一个项目,其中保留了项目和itemdata(number)以及为什么排序。我有2个对象:1.保留项目(名称)的分类组合框2.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巴亚巴巴CCD相机BFFFFDS

sortedlist的结果:巴亚巴巴CCD相机BFFFFDSB-REAL为什么它不能以相同的方式排序,以及是否有可能从sortedlist属性中对齐呢?ps我知道有可能使用

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

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

c# .net sorting combobox sortedlist
1个回答
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);
    }

使用排序列表或组合框排序是否有更聪明的方法?

© www.soinside.com 2019 - 2024. All rights reserved.