c# - WinForms 中的 WPF 装饰器

标签 c# vb.net winforms drag-and-drop

我正在尝试找出如何实现在 WPF 中称为“拖动装饰器”的东西(我相信是这样——还没有使用 WPF 的经验)。几天来我一直在搜索和尝试不同的建议解决方案,但没有一个看起来像我所追求的。我希望尽可能接近 Windows 的 native 外观。

它是我们在 Firefox 中拖动地址栏地球仪或 IE 中的 BigBlueE™ 等时在鼠标指针略上方和左侧看到的半透明图像。

在此页面上双击并拖动一个词,您就会明白我的意思。光标保持为 Cursors.No,直到遇到 TextBox——此时我们会看到被拖动文本的图形表示。显示光标的标准移动/复制视觉指示器(右下角的小灰色方 block ;复制时加号)。

Sheridan 说 here他解决了这个问题;我希望收到他的提示。

建议使用 VB 或 C# 都可以,但必须使用 WinForms。

如果我能找到正确的方向,我就可以从那里开始。

谢谢。


更新:我已经确定了我的首选解决方案,here .我知道我最初要求光标的 native 移动/复制指示器保持不变,但这里的 SetDropDescription() 功能非常好,我改变了主意并决定改用它。下面是 WPF 示例在运行时的样子:

DragDropSample

这很不错。这都是 Interop,所以它应该直接转换为 WinForms。

最佳答案

可以使用自定义光标实现此效果。您可以按照 this answer 中的说明创建游标.当您开始拖动操作时,创建光标,并在 GiveFeedback 事件中,将 Cursor.Current 设置为该光标并将 e.UseDefaultCursors 设置为错误。

这是一个完整的例子(使用 LINQPad):

https://gist.github.com/thomaslevesque/837d1a8295b33be2b404

关于c# - WinForms 中的 WPF 装饰器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23426536/

相关文章:

c# - 单元测试组织

c# - 帮助将 LINQ 表达式从 C# 转换为 VB

c# - 如何使用 Winform C# 4.5 在任务栏中显示进度

c# - 如何显示两个表的搜索结果?

c# - 在 sql server 上从 C# 运行查询

vb.net - VB.NET 2005/2008 中的非结构化异常处理

c# - SQL 命令问题 (C# Winforms)

c# - 从十进制转换时,字符串包含尾随零

c# - Google Speech Api 从返回 {"result":[]} in C# 的音频文件中获取文本

vb.net - 自定义控件中的文本属性丢失值