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