首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何对DropDownButton项目进行排序?

如何对DropDownButton项目进行排序?
EN

Stack Overflow用户
提问于 2012-08-26 00:15:17
回答 3查看 296关注 0票数 0

我通过xml节点填充DropDownButton

代码语言:javascript
复制
foreach (System.Xml.XmlNode node in kats.SelectNodes("Kats/Kat"))
{
btnKats.DropDownItems.Add(node.InnerText);
}

并且需要对项目进行排序,例如:

代码语言:javascript
复制
btnKats.DropDownItems.Sort... // how can I do this
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-08-26 00:25:32

你不能这么做。

但是你可以这样做:

代码语言:javascript
复制
List<string> list = (List<string>) btnKats.DropDownItems;
list.Sort();
btnKats.DropDownItems = list;

其基本原理是,DropDownItems是一个实现(对象的)普通IList的ToolStripItemCollection。由于对象在本质上不具有可比性,因此不能对IList进行排序,但可以将其转换为列表并对其进行排序。

http://msdn.microsoft.com/en-us/library/system.windows.forms.toolstripitemcollection.aspx

祝好运!

票数 1
EN

Stack Overflow用户

发布于 2012-08-26 00:19:56

使用System.Linq;

代码语言:javascript
复制
....

foreach (System.Xml.XmlNode node in 
    kats
        .SelectNodes("Kats/Kat")
        .OfType<System.Xml.XmlNode>() 
        .OrderBy( node => node.InnerText )
         )
{
  btnKats.DropDownItems.Add(node.InnerText);
}

不要手头有编译器和这行代码

代码语言:javascript
复制
 .OfType<System.Xml.XmlNode>() 

可能不需要。但是,我不确定SelectNodes返回的是IEnumerable<XmlNode>还是IEnumerable

票数 3
EN

Stack Overflow用户

发布于 2012-08-26 00:23:05

在SelectNodes()的末尾添加on .OrderBy()

代码语言:javascript
复制
   foreach(System.Xml.XmlNode node in kats.SelectNodes("Kats/Kat").OfType<XmlNode>.OrderBy(node.InnerText))
    {
        btnKats.DropDownItems.Add(node.InnerText);
    }

编辑: Wiktor是正确的,我认为需要添加.OfType,所以我在这里也添加了它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12123606

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档