在 vb.net 中的组合框中排序会在字母字符之前对波形符进行排序 - 我可以使用什么来排序高于字母的排序?

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

我正在编写一个程序,用我在程序资源中提供的数据列表填充组合框。 (例如:美国国家公园宿舍)。我必须允许在用户拥有知道年份但不知道状态的数据项的情况下出现某些条目。 (该计划期间每年都会发布多个州的25美分硬币)。对于这些情况,我希望用户能够选择一个值 ~Unkn 来表示输入年份已知,但不知道该年的特定状态。

我正在输入来自我自己的数据库的值,但在创建此数据库时我没有所有信息。现在我正在将数据库信息输入到我的程序中,我想处理所有硬币,然后返回并找到那些在创建数据库时我没有所有详细信息的硬币。我的演示文稿列表显示了年份、州和国家公园的名称。如果我只知道年份,我希望能够指定 ~Unkn。我选择波浪号是因为它是 ASCII 图表中最高的 ASCII 可打印字符,我认为它会排序到我的任何列表的最后。

我将选择列表放入组合框中,并将 SORTED 属性设置为 TRUE。除了首先进行波形符排序之外,一切都很好,这不是我想要的工作方式。我希望这个列表项位于所有列表的末尾。我不喜欢波浪号,但我更喜欢它,我希望有一些我不知道的技巧可以让这项工作成功。我首先尝试了下划线(ASCII 95),但没有像我希望的那样工作。我没有考虑到情况。

任何人都可以告诉我如何完成此任务或解释为什么不能按照我的意愿完成此任务。我在其他地方看到人们讨论 UNICODE 是类似问题的根源,但我对此进行了研究,并且我不认为这就是导致我的问题的原因。我被困住了。

感谢您提供的任何光芒

egb .

vb.net
1个回答
0
投票

如果您的数据在添加到 ComboBox 之前位于列表中,您可以自己对其进行排序,而不是使用 .Sorted 属性:

Dim a As New List(Of String) From {"C", "b", "~", "_"}
a.Sort(StringComparer.OrdinalIgnoreCase)
ComboBox1.Items.AddRange(a.ToArray())


文档:

列表.排序方法

StringComparer.OrdinalIgnoreCase

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