DropDownButton を xml ノードで設定します
foreach (System.Xml.XmlNode node in kats.SelectNodes("Kats/Kat"))
{
btnKats.DropDownItems.Add(node.InnerText);
}
そして、次のようなアイテムを並べ替える必要があります。
btnKats.DropDownItems.Sort... // how can I do this
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
。
できません。
しかし、これを行うことができます:
List<string> list = (List<string>) btnKats.DropDownItems;
list.Sort();
btnKats.DropDownItems = list;
その根拠は、DropDownItems が (オブジェクトの) プレーンな IList を実装する ToolStripItemCollection であることです。オブジェクトは自然に比較可能ではないため、IList を並べ替えることはできませんが、List<string> にキャストして並べ替えることができます。
http://msdn.microsoft.com/en-us/library/system.windows.forms.toolstripitemcollection.aspx
幸運を!
SelectNodes() の最後に .OrderBy() を追加します。
foreach(System.Xml.XmlNode node in kats.SelectNodes("Kats/Kat").OfType<XmlNode>.OrderBy(node.InnerText))
{
btnKats.DropDownItems.Add(node.InnerText);
}
編集: Wiktor は正しいです。.OfType を追加する必要があると信じているので、ここにも追加します。