我为TreeView控件创建了一个自定义处理程序:
public class TreeViewOnlyLeavesSelectable : TreeView
{
protected override void OnNodeMouseClick(TreeNodeMouseClickEventArgs e)
{
//base.OnNodeMouseClick(e);
if (e.Node.Nodes.Count == 0)
{
this.SelectedNode = null;
this.Refresh();
return;
}
}
}
问题是,它仍然选择非叶子节点。我调试了它,它正确执行if语句,但在应用程序中仍然选择节点。我做错了什么?
答案 0 :(得分:2)
根据您的代码(e.Node.Nodes.Count == 0
),您只需要选择NON-leaf节点。
根据你的描述(“它仍然选择非叶子节点”)你只想要叶子节点可选。
除此之外,请考虑改为覆盖OnAfterSelect
。当使用键盘而不是鼠标时,这也有效。
以下代码仅允许选择叶节点。
protected override void OnAfterSelect(TreeViewEventArgs e)
{
base.OnAfterSelect(e);
if (e.Node.Nodes.Count != 0)
{
this.SelectedNode = null;
}
}