C#为什么在取消设置为true时会单击treeview节点?

C#为什么在取消设置为true时会单击treeview节点?,c#,winforms,treeview,C#,Winforms,Treeview,在我的winform应用程序中,我有一个树状视图。为了给出节点被禁用的想法,我设置了节点的forecolor,当BeforeSelect触发时,我将e.cancel设置为true 但是,当节点的标记满足某些条件时,可以选择节点。这就是为什么我有一个NodeMouseClick。但当某个节点可能未被单击时,我会在BeforeSelect事件中将e.cancel设置为true 现在的问题是,NodeMousClick事件总是被触发,所有代码都被删除,即使我在BeforeSelect事件中将e.can

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

但是,当节点的标记满足某些条件时,可以选择节点。这就是为什么我有一个NodeMouseClick。但当某个节点可能未被单击时,我会在BeforeSelect事件中将e.cancel设置为true


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

我认为在
BeforeSelect
事件中将
Cancel
设置为
true
会阻止被引发。毕竟,节点仍然被单击。问题是单击是否会导致选择节点


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

我会假设在
beforesect
事件中将
Cancel
设置为
true
,会阻止引发。毕竟,节点仍然被单击。问题是单击是否会导致选择节点


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

因为该节点不会被选中(您已取消选中),但仍会被单击

当您完成“检查是否可以选择节点例程”并且没有取消它时(因此:启用单击);检查是否已选择该节点

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

因为该节点不会被选中(您已取消选中),但仍会被单击

当您完成“检查是否可以选择节点例程”并且没有取消它时(因此:启用单击);检查是否已选择该节点

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

啊哈。因此,IsSelected属性是关键:)Aha thnx。因此,IsSelected属性是关键:)