设置TreeView.SelectedNode = null时可以使用什么事件?

时间:2009-11-23 06:40:12

标签: c# .net winforms

当我将SelectedNode设置为null时,树正确更新,但BeforeSelectAfterSelect不会触发。

有什么方法可以判断选择何时更改为null?

我的第一个想法是扩展控件并添加一个事件,虽然我会认为这样的事情已经可用。

2 个答案:

答案 0 :(得分:1)

我能做到这一点的唯一方法是创建一个新控件并为SelectedNode提供新的实现,甚至OnAfterSelectOnBeforeSelect都没有被调用。

public new TreeNode SelectedNode {
    get { return base.SelectedNode; }
    set {
        // Remember, if `value' is not null this will be called in `base'.
        if (value == null) {
            TreeViewCancelEventArgs args
                = new TreeViewCancelEventArgs(value, false, TreeViewAction.Unknown);
            OnBeforeSelect(args);
            if (args.Cancel)
                return;
        }
        base.SelectedNode = value;
        // Remember, if `value' is not null this will be called in `base'.
        if (value == null) {
            OnAfterSelect(new TreeViewEventArgs(value, TreeViewAction.Unknown));
        }
    }
}

答案 1 :(得分:1)

我认为你的解决方案很好。但是,我刚刚发现了这个控件(密切关注SO的右栏:)):

http://treeviewadv.sourceforge.net/

支持您正在寻找的东西,也许还有其他好东西......