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;
}
// を使用しているので、 for eachTagを節約できますMyPlugin TypeNode
そして、これは私TreeViewが a からmy を取り込むために使用している方法です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ので使えない…TreeNodeArrayTreeView.Nodes.AddTreeNode
どうすればできますか?