gpt4 book ai didi

wpf - 落在控制范围之外

转载 作者:行者123 更新时间:2023-12-03 01:38:15 25 4
gpt4 key购买 nike

我正在改进标准 WPF TabControl。我想为其添加取消对接功能:用户将页面拖动到 TabControl 之外,该页面就会在窗口中取消停靠。我想要此控件中的两个事件 - PageDragStart(当页面拖动到外部时引发)和 PageDragEnd(当页面放到外部时引发)

我对第一个事件没有任何问题。

但是第二个... OnDrop 不会调用,因为该项目已放在 tabcontol 容器之外。我怎么知道它已被删除?

附注我想要一个通用控件(因此,不应使用放置的窗口选项卡控件或类似的东西来连接和硬编码取消对接功能)

最佳答案

为什么要使用DoDragDrop?当我阅读您的描述时,单独使用 Mouse.Capture 似乎是显而易见的解决方案:

  1. 处理选项卡上的 OnMouseLeftButtonDown 并开始捕获
  2. 处理选项卡上的 OnMouseMove 并根据 HitTest 更新光标
  3. 处理选项卡上的 OnMouseLeftButtonUp,然后停止捕获并进行适当的更改

您可能考虑使用 DoDragDrop 而不是简单的鼠标捕获的原因是:

  1. 与 Windows 的 OLE 拖放集成,以便您可以在应用程序和技术之间进行拖放
  2. DoDragDrop 调用的模态性质(这实际上对我来说似乎更不利)
  3. 目标的自动 HitTest
  4. 标准化的“放置操作”API,允许不相关的应用程序处理复制与移动等。

您显然不需要 OLE 集成或多应用程序支持,并且您想要自定义 HitTest ,因此看起来 DoDragDrop 与直接处理鼠标捕获相比没有任何优势。

关于wpf - 落在控制范围之外,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2003127/

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