我通过xml节点填充DropDownButton
foreach (System.Xml.XmlNode node in kats.SelectNodes("Kats/Kat"))
{
btnKats.DropDownItems.Add(node.InnerText);
}
需要对项目进行排序,例如:
btnKats.DropDownItems.Sort... // how can I do this
答案 0 :(得分:3)
使用System.Linq;
....
foreach (System.Xml.XmlNode node in
kats
.SelectNodes("Kats/Kat")
.OfType<System.Xml.XmlNode>()
.OrderBy( node => node.InnerText )
)
{
btnKats.DropDownItems.Add(node.InnerText);
}
手头没有编译器和这一行
.OfType<System.Xml.XmlNode>()
可能不需要。但是,我不确定SelectNodes
是返回IEnumerable<XmlNode>
还是只返回IEnumerable
。
答案 1 :(得分:1)
将.OrderBy()添加到SelectNodes()的末尾
foreach(System.Xml.XmlNode node in kats.SelectNodes("Kats/Kat").OfType<XmlNode>.OrderBy(node.InnerText))
{
btnKats.DropDownItems.Add(node.InnerText);
}
编辑:Wiktor是正确的我相信我需要添加.OfType,所以我也在这里添加。
答案 2 :(得分:1)
你不能。
但你可以这样做:
List<string> list = (List<string>) btnKats.DropDownItems;
list.Sort();
btnKats.DropDownItems = list;
基本原理是DropDownItems是一个ToolStripItemCollection,它实现了一个普通的IList(对象)。由于对象不能自然地进行比较,因此您无法对IList进行排序,但可以将其强制转换为List&lt; string&gt;并对其进行排序。
http://msdn.microsoft.com/en-us/library/system.windows.forms.toolstripitemcollection.aspx
祝你好运!