C# 按单击次数最多的项目排序的列表框
以防万一有人已经实现了这一点或想要玩。这是一个有趣的小问题 我在找一个“收藏夹”列表框。项目将根据每个项目被选择(或单击)的次数实时重新排列 因此,最上面的项目就是点击次数最多的项目。最底层是点击最少的一个。只是为了踢,如果几个项目有相同的排名,他们是按字母顺序排序C# 按单击次数最多的项目排序的列表框,c#,algorithm,listbox,ranking,C#,Algorithm,Listbox,Ranking,以防万一有人已经实现了这一点或想要玩。这是一个有趣的小问题 我在找一个“收藏夹”列表框。项目将根据每个项目被选择(或单击)的次数实时重新排列 因此,最上面的项目就是点击次数最多的项目。最底层是点击最少的一个。只是为了踢,如果几个项目有相同的排名,他们是按字母顺序排序 祝你好运。这是一个可能的“项目”实施方案,它让那些早熟的点击者感到困惑。所有十几行半的代码 struct Entry { public string text; public int rank;
祝你好运。这是一个可能的“项目”实施方案,它让那些早熟的点击者感到困惑。所有十几行半的代码
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 );
}
struct条目
{
公共字符串文本;
公共int等级;
公共条目(字符串文本,整数秩)
{
this.text=文本;
这个.等级=等级;
}
}
列表ls=新列表();
...
void RankInsert(字符串文本,int秩,int indexPrev)
{
int insertAt=-1;
for(int i=0;ils[i]。秩
||(秩==ls[i]。秩
&&string.CompareOrdinal(text,ls[i].text)<0))
{
insertAt=i;
打破
}
}
如果(indexPrev!=-1)
{
L.RemoveAt(indexPrev);
listbox.Items.RemoveAt(indexPrev);
}
insertAt=(insertAt!=-1)?insertAt:ls.Count;
ls.插入(插入,新条目(文本,等级));
listbox.Items.Insert(插入,文本);
}
如果重复项(错误地)标记为新项,则该方法将允许插入重复项。无论如何,这项检查应该在别处进行
希望对你有帮助。。。对编码感兴趣的人。而且,是的,我仍然对替代实现感兴趣。请随意。我们不是来为您编写整个控件/项目的。这还不是问题,你们很有趣。把它读成“你会怎样…”我会怎样?我会制作一个程序!还是太宽了。诚然,这比“为我编写这个复杂的项目”要好,但即使实现很小,“我如何制作X程序/控制”也不是一个好问题。“我会制作一个程序”几乎是这里所有问题的答案。你们太认真了。