以防万一有人已经实现了这个或想要玩。这是一个有趣的小问题。
我正在寻找“收藏夹”列表框。根据每个选择(或点击)的次数,实时重新排列项目。
所以,最重要的项目是点击最多的项目。最底部是最少点击的一个。仅仅为了踢,如果几个项目具有相同的排名,则按字母顺序排序。
一帆风顺。
答案 0 :(得分:0)
以下是"项目的可能实现"这让那些过早的答题者感到困惑。所有大约十六行代码。
struct Entry
{
public string text;
public int rank;
public Entry( string text, int rank )
{
this.text = text;
this.rank = rank;
}
}
List<Entry> ls = new List<Entry>();
...
void RankInsert( string text, int rank, int indexPrev )
{
int insertAt = -1;
for( int i = 0; i < this.Items.Count; i++ )
{
if( rank > ls[ i ].rank
|| ( rank == ls[ i ].rank
&& string.CompareOrdinal( text, ls[ i ].text ) < 0 ) )
{
insertAt = i;
break;
}
}
if( indexPrev != -1 )
{
ls.RemoveAt( indexPrev );
listbox.Items.RemoveAt( indexPrev );
}
insertAt = ( insertAt != -1 ) ? insertAt : ls.Count;
ls.Insert( insertAt, new Entry( text, rank ) );
listbox.Items.Insert( insertAt, text );
}
如果这些(错误地)标记为新的,则该方法将允许插入重复项。无论如何,该检查应在其他地方进行。
希望它有帮助......对编码感兴趣的人。而且,是的,我仍然对替代实施感兴趣。随意。