C# 取消选择的节点将保持选中状态
我已为我的TreeView控件创建了自定义处理程序:C# 取消选择的节点将保持选中状态,c#,treeview,C#,Treeview,我已为我的TreeView控件创建了自定义处理程序: public class TreeViewOnlyLeavesSelectable : TreeView { protected override void OnNodeMouseClick(TreeNodeMouseClickEventArgs e) { //base.OnNodeMouseClick(e); if (e.Node.Nodes.Count == 0) {
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语句,但在应用程序中仍然选择了节点。我做错了什么?根据您的代码(e.Node.Nodes.Count==0
),您只希望选择非叶节点
protected override void OnAfterSelect(TreeViewEventArgs e)
{
base.OnAfterSelect(e);
if (e.Node.Nodes.Count != 0)
{
this.SelectedNode = null;
}
}
根据您的描述(“它仍然选择非叶节点”),您只希望叶节点是可选择的
protected override void OnAfterSelect(TreeViewEventArgs e)
{
base.OnAfterSelect(e);
if (e.Node.Nodes.Count != 0)
{
this.SelectedNode = null;
}
}
除此之外,请考虑重写<代码> OnEndoScult> /Cord>。当使用键盘而不是鼠标时,也可以使用
以下代码仅允许选择叶节点protected override void OnAfterSelect(TreeViewEventArgs e)
{
base.OnAfterSelect(e);
if (e.Node.Nodes.Count != 0)
{
this.SelectedNode = null;
}
}