所以我在 blog-o-sphere 上看到了很多关于这个的讨论......但我不知道这是一个错误,还是只是我不理解的怪异行为......
说你有一个TreeView
...CheckBoxes
Double-click
在其中一个CheckBox
上Nodes
,然后再次单击该框...您会注意到状态似乎没有正确更改。
这是一个bug
??我总是很谨慎地说我在.NET
...中发现了一个“错误”
复制问题表明这绝对是一个错误*(故意星号)。因为当您双击 TreeView 中未选中的复选框时,调用代码如下:
For Each node As TreeNode In Me.TreeView1.Nodes
Console.WriteLine("{0}: {1}", node.Name, node.Checked)
Next
你会发现,虽然在视觉上它是未选中的,但节点认为它仍然是选中的。我可以看到发生了几件事:
我的结论是,不知何故,双击聚焦复选框,导致第二次鼠标点击不会发送到树节点,而是发送到复选框,这就是复选框未被选中并且树节点没有的原因 -更聪明。
*这是不应该发生的行为,如何分类,我将留给微软。
我在树视图选择方面遇到了类似的问题。我管理了 Treeview.NodeMouseDoubleClick 事件,每个节点通过鼠标双击运行并执行不同的进程。但是当我双击树视图(而不是节点)时,代码已经崩溃。当我意识到 treeview.SelectedNode 与 Treeview.NodeMouseDoubleClick.TreeNodeMouseClickEventArgs e.Node 参数返回的不同时,我解决了这个问题。
因此,如果要在树视图上通过鼠标选择来选择节点,则需要准确地单击它。
希望这可以帮助。