public class Yourclass {
var nodeStates = new Dictionary<int, bool>();
public void addNode(Yourentity entity)
{
TreeNode node= new TreeNode(entity.Name);
node.Tag = entity;
tree.Nodes.Add(entity);
nodeStates.Add(entity.Id, true /* expanded in this case but doesn't matter */);
}
private void TreeControl_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) {
var entity = (Yourentity )e.Node.Tag;
bool state = nodeStates[entity.Id];
// If was expanded or collapsed values will be different
if (e.Node.Nodes.Count > 0 && (e.Node.IsExpanded != state))
{
// We update the state
nodeStates[entity.Id] = e.Node.IsExpanded;
return;
}
/* Put here your actual node click code */
}
}
2条答案
按热度按时间zbq4xfa01#
如果您只需要影响您自己的代码,则可以使用如下标志:
要获得更多的控制,您可能需要在windows消息队列中获得。
dojqjjoe2#
我尝试使用前一种解决方案,但它只起作用一种方式。我实现了一个字典,我在其中保持节点的展开/折叠状态,所以当我发现状态是相同的时,它是一个实际的节点点击,而不是折叠/展开行为。