我通过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发布于 2012-08-26 00:25:32
你不能这么做。
但是你可以这样做:
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
祝好运!
发布于 2012-08-26 00:19:56
使用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。
发布于 2012-08-26 00:23:05
在SelectNodes()的末尾添加on .OrderBy()
foreach(System.Xml.XmlNode node in kats.SelectNodes("Kats/Kat").OfType<XmlNode>.OrderBy(node.InnerText))
{
btnKats.DropDownItems.Add(node.InnerText);
}编辑: Wiktor是正确的,我认为需要添加.OfType,所以我在这里也添加了它。
https://stackoverflow.com/questions/12123606
复制相似问题