我想按类别组织一组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
......
我该怎么做 ?