Treeview.SelectedNode无法正常工作

时间:2015-05-27 15:22:31

标签: c# windows winforms treeview

我正在尝试创建自定义代理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;
    }
}

1 个答案:

答案 0 :(得分:1)

尝试使用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 {