【问题标题】:Unable to programmatically expand TreeNode that is assigned to a TreeView无法以编程方式展开分配给 TreeView 的 TreeNode
【发布时间】:2011-06-15 14:23:01
【问题描述】:

我正在使用 C++ 和 .NET 1.1。将 TreeNode 对象分配给 TreeView 后,我遇到了以编程方式扩展它们的问题。在调试模式下运行以下代码时:

TreeView* myTreeView = new TreeView();
TreeNode* myTreeNode = new TreeNode();
myTreeNode->Expand();
myTreeView->Nodes->Add(myTreeNode);
myTreeNode->Expand();

我可以看到myTreeNodeIsExpanded属性在做第一个Expand()时设置为true,但是当节点添加到myTreeViewIsExpanded设置为false,而第二个Expand() 完全没有效果。

谁能解释这种行为?我在想 TreeView 有一个设置或类似的东西,但我找不到类似的东西,从 MS 提供的示例代码中,这应该可以正常工作,所以我可能遗漏了一些非常明显的东西...

【问题讨论】:

  • 我在 C# 和 .NET 2 中做过很多次,并确认它在那里完美运行。也许是一个错误?
  • 2011年使用.NET 1.1的原因是什么?!?至少使用 2.0
  • 没有子节点不能展开节点:见stackoverflow.com/questions/8242647/…

标签: .net winforms treeview c++-cli .net-1.1


【解决方案1】:

我建议在调用展开之前添加一个 myTreeNode->Collapse()。可能是节点认为它没有展开,所以调用 expand 将被忽略,因为节点认为它已经展开了......

  TreeView* myTreeView = new TreeView();
  TreeNode* myTreeNode = new TreeNode();
  myTreeNode->Expand();
  myTreeView->Nodes->Add(myTreeNode);
  myTreeNode->Collapse();
  myTreeNode->Expand();

【讨论】:

    【解决方案2】:

    您是否尝试侦听TreeView.AfterCollapse 事件以查看在您将TreeNode 添加到TreeView 后是否有其他人正在折叠它?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-20
      • 1970-01-01
      相关资源
      最近更新 更多