在我的winform应用程序中,我有一个树视图。为了给出一个节点被禁用的想法,我设置了节点的前景色和I,当BeforeSelect触发时,我将e.cancel设置为true。
但是,当节点的标签满足某些条件时,可以选择节点。这就是我有一个NodeMouseClick的原因。但是当没有点击节点时,我在BeforeSelect事件中将e.cancel设置为true。
现在的问题是,即使我在BeforeSelect事件中将e.cancel设置为true,也会触发NodeMousClick事件并且所有代码都被删除。那是为什么?
答案 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
事件处理程序中。