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
Type
Node
そして、これは私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
ので使えない…TreeNode
Array
TreeView.Nodes.Add
TreeNode
どうすればできますか?