1 回答
TA贡献2019条经验 获得超9个赞
空鼠标事件发送器与在触摸设备上使用IMessageFilter直接相关。我在 Windows 8.1 触摸设备和 Windows 10 上看到过这种情况。
我在我的应用程序中的事件开始时开始,PreFilterMessage
. 我想确保实际上有一个由Control.FromHandle
. 果然,我可以看到有时简单地触摸表单上的空白区域会返回一个空控件。大概是一个无法转换为 .NET Control 类型的窗口句柄。
表单是空的,带有自定义控件。我确定只使用与Control.FromHandle
.
所以这把我引向了一个大问题——我怎样才能得到一个尝试转换这些控件的空引用?
由于我知道有问题的控件无法转换为 .NET 控件,因此我转向窗口句柄以查找一些信息。我注意在空控件上提出的窗口句柄。
当我单击表单中的空白区域时,我可以看到我按预期获得了表单的窗口句柄。我注意到当我获得空引用时,句柄不是来自我的应用程序中的任何控件。
我认为实际上只有一个答案,手势控制器或类似的东西。这是我开始尝试一些手势的时候。就在那里,几个小时以来我第一次很高兴看到空引用异常。
事实证明,用一根手指移动会PreMessageFilter
从您的表单中获得鼠标移动。一招2周的手指和你鼠标移动你的形式和从手势控制器鼠标移动消息。手势控制器不能使用Control.FromHandle
.
这里发生的事情是我在测试过程中变得懒惰,在点击时将手掌放在触摸屏上。
对于我的场景,我知道我只想处理鼠标移动而不关心手势。我可以忽略空句柄。如果您想同时处理两者,我认为您应该忽略它PreMessageFilter
并使用手势消息正确处理手势。
- 1 回答
- 0 关注
- 184 浏览
添加回答
举报