首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对象作为TreeView.Nodes.Add参数?

对象作为TreeView.Nodes.Add参数?
EN

Stack Overflow用户
提问于 2012-06-13 20:45:45
回答 2查看 1.4K关注 0票数 0

我使用CheckedListBox来显示PluginList。我使用的是EventHandler

代码语言:javascript
复制
private void myCheckedListBox_SelectedIndexChanged(object sender, EventArgs e)
{
    myGUIUtilities.SetDescription(myCheckedListBox.SelectedItem, myRichTextBox);
}

展示一些东西..。这是myGUIUtilities.SetDescription方法:

代码语言:javascript
复制
internal static void SetDescription(object p_SelectedObject, RichTextBox p_TextBoxDescription)
            {
                AbstractEnvChecker l_Plugin = p_SelectedObject as AbstractEnvChecker;
                if (l_Plugin != null)
                    p_TextBoxDescription.Text = l_Plugin.Description;
            }

为了显示我的插件,我只使用了CheckedListBox.Items.Add方法:

MyCheckedListBox.Items.Add(myPlugin);

它接受一个对象作为参数...

现在,我想通过cetgories对我的Plugins进行分类,所以我使用TreeViewTreeNode

问题是TreeView.Nodes.Add(TreeNode node)只接受TreeNode类型作为参数。

实际上,我不能使用需要Plugin类型来获取Plugin.Description属性的相同SetDescription方法……

有没有办法将对象传递给TreeView.Nodes.Add(TreeNode node)方法?或者是另一种方式呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-13 21:12:27

使用树节点上的Tag特性将对象附加到树节点。然后你可以稍后再把它拉回来。

所以你可以这样做(假设插件对象上有一个Name属性)

代码语言:javascript
复制
public TreeNode AddPluginNode(TreeNode parent, AbstractEnvChecker plugin)
{
  TreeNode created = new TreeNode(plugin.Name) { Tag = plugin };
  parent.Nodes.Add(created);
  return created;
}

然后,您可以重写事件处理程序的开头,如下所示:

代码语言:javascript
复制
AbstractEnvChecker l_Plugin = p_SelectedObject as AbstractEnvChecker;
if(l_Plugin == null)
{
  TreeNode selNode = p_SelectedObject as TreeNode;
  if(selNode != null && selNode.Tag != null)
    l_Plugin = selNode.Tag as AbstractEnvChecker;
}
//might still be null in the future if you start using Tags for other types.
票数 2
EN

Stack Overflow用户

发布于 2012-06-28 16:20:34

您可以创建自己的继承TreeNode的树节点类。继承的类可以具有对插件的强类型引用,而不是使用tag属性。我将此方法用于具有不同类型对象、自定义上下文菜单等的相当复杂的treeview。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11015120

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档