更改SystemParameters

har*_*rri 5 .net c# wpf drag-and-drop

只是一个简单的问题:SystemParameters类究竟是什么?它只是一个"默认值"的集合,还是实际上是挂钩到窗口?

背景:对于拖放操作,我们使用SystemParameters.MinimumHorizo​​ntalDragDistance和SystemParameters.MinimumVerticalDragDistance属性来检测D&D.对于触摸屏,默认值很小,我想知道是否必须实现一些配置机制来更改此值,或者我是否可以在某处更改某些系统设置(比如注册表或控制面板或其他).

谢谢!

更新:通过下面的详细解答,我终于确实找到了我想要的东西.仅供参考,如果其他人在将来寻找它:可以在注册表中更改最小拖动距离

HKEY_CURRENT_USER\Control Panel\Desktop\DragHeight
HKEY_CURRENT_USER\Control Panel\Desktop\DragWidth
Run Code Online (Sandbox Code Playgroud)

默认情况下,这两个值都设置为4(px).请注意,更改仅在重新启动后生效.

Cod*_*ray 6

它反映了用户的当前设置,如Windows中各个地方所指定的那样.用户可以在"控制面板"中轻松更改某些设置,而其他设置位于"注册表"值等较为模糊的位置.

最终,它是Windows API GetSystemMetrics函数的托管包装器.

文档提供了有关从何处获取属性公开的每个值的更具体的详细信息.例如,SystemParameters.MinimumHorizontalDragDistance属性对应于以拖动点为中心的矩形的宽度,以允许在拖动操作开始之前鼠标指针的有限移动.从本质上讲,它是"余地",允许用户在系统将其操作解释为开始拖动之前撞击或推挤光标.

该文档还告诉你,它映射到SM_CXDRAGGetSystemMetrics功能.因此,如果您需要更详细的信息,可以仔细阅读本机函数的文档,该文档告诉您以下内容:

鼠标指针在拖动操作开始之前可以移动的鼠标指针两侧的像素数.这允许用户轻松地单击和释放鼠标按钮而不会无意地开始拖动操作.如果此值为负,则从鼠标按下的左侧减去它并添加到其右侧.

简而言之,它绝对是"迷上了Windows".这是确定系统设置的适当方法,而不是硬编码在开发时看起来合乎需要的值.您的应用程序不应为系统已允许用户配置的内容公开自己的配置界面; 这既冗余又令人困惑.