树状视图.SelectedNode工作不正常

本文关键字:工作 不正常 SelectedNode 视图 | 更新日期: 2023-09-27 17:50:56

我正在尝试创建一个自定义的行为TreeView。当您单击一个节点时,它应该切换为选中/未选中。目前我可以通过单击一次选中节点,再单击一次取消选中节点,但如果不先选择另一个节点,则无法通过单击再次选中该节点。如有任何帮助,我将不胜感激。

TreeNode lastNode;
private void treeViewMS1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
    if (lastNode == e.Node)
    {
        treeViewMS1.SelectedNode = null;
        lastNode = null;
    }
    else
    {
        if (lastNode == null)
        {
            treeViewMS1.SelectedNode = e.Node;
        }
        lastNode = e.Node;
    }
}

树状视图.SelectedNode工作不正常

尝试使用BeginInvoke过程延迟动作,直到鼠标单击事件完成处理。这可能是干扰:

TreeNode lastNode;
private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) {
  this.BeginInvoke(new Action(() => {
    if (lastNode == e.Node) {
      treeView1.SelectedNode = null;
      lastNode = null;
    } else {
      if (lastNode == null) {
        treeView1.SelectedNode = e.Node;
      }
      lastNode = e.Node;
    }
  }));
}

如果Action方法不可用,你可以使用MethodInvoker样式:

this.BeginInvoke((MethodInvoker)delegate {