TreeNodeっぽいデータ構造からpathを指定して対象ノードを探す
クラス名は仮。本来TreeNodeって付けたいけどそうするとSystem.Windows.Controls.TreeNodeとかぶって面倒。
public class ComplexSelectItem { public string id; public string text; public List<ComplexSelectItem> subItems; public ComplexSelectItem() { text = ""; subItems = new List<ComplexSelectItem>(); } public bool hasChild() { return (subItems.Count > 0); } public ComplexSelectItem find(List<string> path) { ComplexSelectItem target = null; ComplexSelectItem current = this; IEnumerator<string> e = path.GetEnumerator(); while (e.MoveNext()) { IEnumerator<ComplexSelectItem> ee = current.subItems.GetEnumerator(); while (ee.MoveNext()) { if (ee.Current.text == e.Current) { current = ee.Current; target = current; break; } } } return target; } public void dump(TextWriter writer, string indent) { writer.WriteLine(indent + text); foreach (ComplexSelectItem item in subItems) { item.dump(writer, indent + " "); } } }
なんかいろいろ間違っている…