当我将SelectedNode
设置为null
时,树正确更新,但BeforeSelect
和AfterSelect
不会触发。
有什么方法可以判断选择何时更改为null?
我的第一个想法是扩展控件并添加一个事件,虽然我会认为这样的事情已经可用。
答案 0 :(得分:1)
我能做到这一点的唯一方法是创建一个新控件并为SelectedNode
提供新的实现,甚至OnAfterSelect
和OnBeforeSelect
都没有被调用。
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/
支持您正在寻找的东西,也许还有其他好东西......