c# - 如何更改 Windows 窗体应用程序中的拖动阈值?

标签 c# winforms drag-and-drop

我遇到了用户在选择对象时拖动对象的问题。我已经尝试了几种使用鼠标事件来设置不太敏感阈值的方法。对于 example .

我认为它们不起作用主要是因为我使用的是 Piccolo 图形引擎。

我知道这可以通过注册表完成,但我不想弄乱我的用户注册表项。

另一种方法似乎是将 pinvoke 与 SystemParametersInfo; 以及 SPI_SETDRAGHEIGHT 和 SPI_SETDRAGWIDTH 参数一起使用。

我知道如何调用它,

[DllImport("user32.dll", SetLastError = true)]
static extern bool SystemParametersInfo(int uiAction, int uiParam, IntPtr pvParam, int fWinIni);

我知道 uiAction 参数值是,

SPI_SETDRAGHEIGHT = 0x004D

SPI_SETDRAGWIDTH = 0x004C

我知道 uiParam 是宽度或高度。

除此之外,我被困住了。我真的不明白这些东西,也不知道如何设置最后两个参数。

有C++(?)代码here .

但我对 C 变体以及将它们转换为 C# 的了解令人遗憾。

那么有人可以帮我在我的应用程序中设置拖动拖动阈值吗?

最佳答案

我检查了 Piccolo 源代码,发现拖动阈值取决于您的系统设置,因此使用 PInvoke 调用 SystemParametersInfo 在这里对您没有帮助。但是,可以通过更改 PDragSequenceEventHandler 对象的 MinDragStartDistance 属性来配置阈值。默认值为 0,这可能解释了为什么您的用户对它过于敏感感到沮丧。

不过,我没有使用 Piccolo 的经验,所以我无法真正评论如何获得对该特定属性的访问权限。

关于c# - 如何更改 Windows 窗体应用程序中的拖动阈值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24268860/

相关文章:

c# - iTextsharp 横向文档

.net - 添加节点后自动对TreeView进行排序

java - Java拖拽时如何获取鼠标信息?

drag-and-drop - 处理 WM_DROPFILES 消息在 Lazarus 中不起作用

c# - 队列 <byte> 与流

c# - Metro App - 如何检测是否使用 Live ID 或本地帐户登录

c# - 检测是否在 Windows 设置中选择了 "Obtain IP address automatically"

c# - 具有透明背景的 Windows 窗体,可以通过单击

javascript - 如何使用窗口覆盖和多个拖放区处理文件拖放?

c# - 将对象添加到 javascript 数组,然后在同一个 .js 文件中访问它们