我填充DropDownButton通過XML節點如何對DropDownButton項進行排序?
foreach (System.Xml.XmlNode node in kats.SelectNodes("Kats/Kat"))
{
btnKats.DropDownItems.Add(node.InnerText);
}
,需要對項目進行排序,somethig像:
btnKats.DropDownItems.Sort... // how can I do this
我填充DropDownButton通過XML節點如何對DropDownButton項進行排序?
foreach (System.Xml.XmlNode node in kats.SelectNodes("Kats/Kat"))
{
btnKats.DropDownItems.Add(node.InnerText);
}
,需要對項目進行排序,somethig像:
btnKats.DropDownItems.Sort... // how can I do this
你不能。
但你可以這樣做:
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
祝你好運!
使用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
。
添加上.OrderBy()來)的SelectNodes結束(
foreach(System.Xml.XmlNode node in kats.SelectNodes("Kats/Kat").OfType<XmlNode>.OrderBy(node.InnerText))
{
btnKats.DropDownItems.Add(node.InnerText);
}
編輯:Wiktor的是正確的我在neededing添加.OfType,所以我補充說,在這裏也beleive。
哦,三種工作方案。但我只能接受一個。感謝everyOne。 – Alegro