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