在ownerdrawfixed模式

时间:2017-07-30 00:20:47

标签: vb.net sorting listbox

我有一个listbox,其sorted属性设置为true。当drawmode设置为normal时,它按字母顺序按预期排序。但是,当我将drawmode设置为ownerdrawfixed以便我可以更改某些项目的颜色时,排序顺序就完全不同了。它不是将sorted属性设置为false(这将列出添加到列表中的顺序中的项目),但我还没有弄清楚它正在使用的顺序。用于更改颜色的item类只有2个属性:文本(作为字符串)和颜色......文本是第一个属性。每次运行程序时,列表都是相同的,所以它不是随机的。但它肯定不是按字母顺序排列的。我没有要发布的代码,因为我在设计时设置了sorted属性,在代码中没有任何改变它的东西。

我包括一个带有4个列表框的屏幕截图,它应该显示正在发生的事情。 Sorting Issue

我搜索了列表框排序问题,其中只有2个帖子显示,但都没有解决此问题。

1 个答案:

答案 0 :(得分:0)

我找到了解决办法,但我不认为这是必要的,而且我觉得不应该有额外的处理和开销。 我已经尝试将数据输入到已排序的drawmode普通,不可见的列表框中,然后一次读取这个项目并将其提供给未排序的drawmode ownerdrawfixed列表框,以便我可以更改某些项目的颜色。虽然这确实有效,但如果要读取的项目非常多,最终可能会减慢程序的速度。而且,如果我使用一个已排序的ownerdrawfixed框开始,我已经弄清楚它将它们放入的顺序。它将前两个项目放在列表的底部,然后交替上下...所以顺序将是这样的...... 3,5,7,9,10,8,6,4, 2,1。当我第一次尝试阅读已排序的正常列表并将其输入到已排序的ownerdrawfixed列表中时,我看到了这一点,以查看它在输入订单方面的位置。