0

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
4

3 に答える 3

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

于 2012-08-25T16:19:55.920 に答える
1

できません。

しかし、これを行うことができます:

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

幸運を!

于 2012-08-25T16:25:32.230 に答える
1

SelectNodes() の最後に .OrderBy() を追加します。

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

編集: Wiktor は正しいです。.OfType を追加する必要があると信じているので、ここにも追加します。

于 2012-08-25T16:23:04.920 に答える