C#为什么取消时单击的树视图节点设置为true?

时间:2010-05-18 08:07:28

标签: c# winforms treeview

在我的winform应用程序中,我有一个树视图。为了给出一个节点被禁用的想法,我设置了节点的前景色和I,当BeforeSelect触发时,我将e.cancel设置为true。

但是,当节点的标签满足某些条件时,可以选择节点。这就是我有一个NodeMouseClick的原因。但是当没有点击节点时,我在BeforeSelect事件中将e.cancel设置为true。

现在的问题是,即使我在BeforeSelect事件中将e.cancel设置为true,也会触发NodeMousClick事件并且所有代码都被删除。那是为什么?

2 个答案:

答案 0 :(得分:4)

因为节点不会被选中(你已经取消了它),但仍被点击。

当您完成“检查节点是否可以选择例程”并且不取消它时(因此:启用了点击);检查节点是否被选中

    private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
    {
        if (e.Node != null && e.Node.IsSelected)
        { //dostuff; 
        }

答案 1 :(得分:0)

我认为在Cancel事件中将true设置为BeforeSelect会阻止AfterSelect被提升。毕竟,仍然点击了该节点。问题是点击是否导致节点被选中。

如果可能,我会将逻辑移到AfterSelect事件处理程序中。