【问题标题】:Trying to sort an array alphabetically, but the first item isn't getting sorted尝试按字母顺序对数组进行排序,但第一项未排序
【发布时间】:2013-01-29 06:13:08
【问题描述】:

My.Resources.MyList 是一个包含项目列表的文本文件,每个项目位于单独的行中。比如……

Green
Red
Black
Orange
etc.

我正在尝试将该列表排序到一个数组中,然后按字母顺序将结果输出到一个列表框中。

这是我的代码...

Dim MyListArray() As String = My.Resources.MyList.Split(Environment.NewLine)
Array.Sort(MyListArray)
MyListBox.DataSource = MyListArray

但是当我这样做时,列表中的第一项没有得到排序(由于某种原因它在列表的末尾结束)。换句话说,最终结果应该看起来像......

Black
Green
Orange
Red

但它看起来像......

Black 
Orange
Red
Green

有什么想法吗?

【问题讨论】:

  • 您确定没有导致此问题的隐藏字符吗?将所有内容复制粘贴到记事本中,然后返回到您的资源中。
  • 刚刚试过,结果一样。
  • ListBox 的选定项是否有可能被删除并添加回数组的末尾,在表单的某个位置...例如,在处理 ListBox 事件之一的代码中?跨度>
  • 由于某种原因,我无法让它与数组一起使用,所以我想我会尝试使用通用列表来做类似的事情。无论如何,谢谢你们!

标签: vb.net


【解决方案1】:

确保您的单词不以空字符开头/结尾。

MyListArray = MyListArray.Select(Function(a) a.Trim()).ToArray()

【讨论】:

    【解决方案2】:

    列表框的排序属性默认为false。所以试试这个:

    Listbox.Sorted = True

    Listbox.TabIndex = 1

    参考:http://msdn.microsoft.com/en-us/library/system.windows.forms.listbox.sort.aspx?cs-save-lang=1&cs-lang=vb#code-snippet-1

    【讨论】:

    • 您可以提供未排序的数组本身并在列表框中按字母顺序对其进行排序。然而,问题很可能是蒂姆和马格努斯也提到的......
    • 刚刚也试过了……还是没有运气。我真的不知道为什么那行不通。奇怪!
    • 你能输出你的排序数组,看看里面的数据是什么,如果它真的按照你期望的方式排列...尝试换成不同的文本集。如果它仍然存在,那就太奇怪了......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-12
    • 1970-01-01
    • 1970-01-01
    • 2019-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多