【问题标题】:C# Why is a treeview node clicked when canceled is set to true?C#为什么取消设置为true时单击树视图节点?
【发布时间】:2011-02-20 18:41:19
【问题描述】:

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

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

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

【问题讨论】:

    标签: c# winforms treeview


    【解决方案1】:

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

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

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

    【讨论】:

    • 啊,谢谢。因此 IsSelected 属性是关键:)
    【解决方案2】:

    我假设在BeforeSelect 事件中将Cancel 设置为true 会阻止AfterSelect 被引发。毕竟,节点还是被点击的。问题是点击是否会导致节点被选中。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-15
      • 2013-07-13
      • 2014-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多