【发布时间】:2013-08-27 15:00:26
【问题描述】:
每当我在树节点文本之外单击时,在控件部分,它会触发节点单击事件,但不会突出显示该节点。我不确定为什么会这样。
我希望在单击时选择节点-当您单击节点文本时-而不是空格-我只假设节点宽度达到整个 Treenode?如果这与它有关,我在dock.fill 模式上有Treeview - 我尝试了一切,但无法让它正常运行。
也许有人会知道发生了什么。
更新:
if (e.Location.IsEmpty)
{
似乎效果更好-但仍然在没有文本的空白处选择节点-显然节点宽度似乎延伸到整个树视图?
有没有更好的方法来完成我想要的?或者这是最好的方法?
更新:以前的想法行不通-叹气-我以为它做到了,但事实并非如此。
新问题:当我从树视图切换时,我认为部分问题与现在的焦点有关。
更新-
我想出的关于在 beforeSelect 事件上禁用鼠标右键选择节点的唯一代码是
if (MouseButtons == System.Windows.Forms.MouseButtons.Right)
{
e.Cancel = true;
}
但它没有用 - 任何帮助表示赞赏 - 遵循唯一答案的建议,了解更多详细信息。
【问题讨论】:
-
据我记得你可以检查 Selected 如果它为空则从事件处理程序返回
-
c# - Problem with NodeMouseClick 的可能重复项 - 我认为这个问题的答案将解决您的问题。
-
NodeMouseClick 事件非常提前触发,让代码有机会用它做一些有意义的事情。其中一个内置是“仅在单击文本时才有意义”。您几乎总是想要 AfterSelect 事件,这是最后一个触发的事件。
-
看看 Cody Gray 给stackoverflow.com/questions/4333093/…的回答
-
是的,我查看了 Javed 帖子 - 从帖子看来,包装器处理 TreeView 中的选择事件的方式存在故障。我将测试 AfterSelect- 但我觉得它可能是徒劳的。希望帖子是错误的,您可以在不继承和覆盖右键单击的情况下解决它。如果这是唯一的方法——我会忍受鬼魂。