gpt4 book ai didi

c# - TreeView(带有复选框)没有正确处理点击?

转载 作者:太空宇宙 更新时间:2023-11-03 17:53:43 25 4
gpt4 key购买 nike

我有一个基本上类似于 Photoshop 图层面板的 TreeList。它是一个带有复选框的分层列表,用于切换文档各个层的可见性。这是通过 BeforeChecked 事件完成的,该事件在 .Checked 值切换之前引发。

它工作正常,除非你双击它,此时一切似乎都乱了套。

如果您双击一个复选框一次,它会切换选中的值两次(这是预期的行为),但它不会切换图层的可见性两次,因为它不会提高 BeforeChecked 两次。

我想我可以通过将它放在 MouseDoubleClick 事件中来解决这个问题:

TreeViewHitTestInfo hit = treeLayerPalette.HitTest(e.X, e.Y);
hit.Node.Checked = !(hit.Node.Checked);

这适用于除第一次以外的所有双击。所以它首先只引发一次 BeforeChecked 事件(而不是 MouseDoubleClick),使复选框与图层的可见性不同步,然后所有后续双击都会引发 BeforeChecked 和 MouseDoubleClick 事件(这反过来引发BeforeChecked 事件),维护不正确的关系。

此外,我曾在 DoubleClick 事件中放置了一个 MessageBox.Show()。非常尴尬的是,它实际上并没有在双击时显示,而是在第三次单击时显示,无论实际双击和第三次单击之间经过了多少时间。双击 20 秒后执行的第三次单击将引发 MouseDoubleClick 事件,但实际的双击不会。

这里到底发生了什么,我该如何解决?

最佳答案

这是启用复选框的 TreeView 的问题,但是有一些可接受的解决方法。首先:MS 知道这个问题但拒绝修复它...:http://connect.microsoft.com/VisualStudio/feedback/details/775922/treeview-double-click-bug#details <-- 错误报告....

所以除了解决它别无他法。最简单的方法是将 Treeview 子类化并强制禁用复选框上的 dblclick ...答案(在 SOF 上):c# treeview ignore double click only at checkbox

希望这对您有所帮助....

关于c# - TreeView(带有复选框)没有正确处理点击?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17356976/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com