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

时间:2014-06-17 16:23:29

标签: c# winforms drag-and-drop

用户在选择对象时拖动对象时遇到问题。我尝试了几种使用鼠标事件设置灵敏度较低阈值的方法。对于example

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

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

替代方案似乎是使用带有SystemParametersInfo;的pinvoke以及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#是可悲的。

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

1 个答案:

答案 0 :(得分:1)

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

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