我想按类别组织一组Object(MyPlugin) 。TreeView实际上我正在TreeView使用以下方法将它们添加到:
internal static TreeNode AddPluginNode(TreeView parent, AbstractEnvChecker plugin)
{
TreeNode created = new TreeNode(plugin.Name) { Tag = plugin };
parent.Nodes.Add(created);
return created;
}
// 我正在使用,Tag所以我可以MyPlugin Type为每个保存Node
这是我用来填充我TreeView的方法List<MyPlugin>:
internal static void FillTreeViewWithPlugins(TreeView p_TreeView, Type p_Type, IList<AbstractEnvChecker> p_List)
{
TreeNode v_TreeNode;
if (p_TreeView != null)
{
p_TreeView.Nodes.Clear();
foreach (object p_Item in p_List)
{
if (p_Item.GetType().IsSubclassOf(p_Type))
{
v_TreeNode = null;
v_TreeNode = AddPluginNode(p_TreeView, p_Item as AbstractEnvChecker);
}
}
}
}
一切正常,但问题是前面的方法显示了一个简单TreeView的包含然后列表的MyPlugin. 我想通过一个名为Category( String MyPlugin.Category) 的属性对它们进行分类。
所以我应该这样进行:
TreeNode testNodeA = new TreeNode("A");
TreeNode testNodeB = new TreeNode("B");
TreeNode testNodeC = new TreeNode("C");
TreeNode[] array = new TreeNode[] { testNodeA, testNodeB, testNodeC };
TreeNode cat = new TreeNode("Categorie X", array);
treeView1.Nodes.Add(cat);
- 如果我想保留我以前的代码,我不知道每个类别要添加多少插件,所以我不能使用
Array固定尺寸的插件...... - 我不能使用
List,因为TreeNode构造函数只接受Array而TreeView.Nodes.Add方法只接受TreeNode......
我该怎么做 ?