【问题标题】:WinForm off screen preventingWinForm 离屏防止
【发布时间】:2012-07-19 18:23:00
【问题描述】:

关注我的previous post

当用户进行拖放操作时,我可以防止 winform 离开屏幕, 但是我注意到,当我移动表单时,鼠标光标似乎运行得很快,比 winForm 还快,事实上,当拖放完成时,鼠标光标出现在表单之外的位置。 有什么办法可以防止这种情况发生吗?

【问题讨论】:

  • 快吗?我不会这么说;只是当表单碰到不可见边框时,您可以将光标移出表单,因为与表单不同,光标的移动不受限制。这不是你观察到的吗?
  • 没有。我的意思是当 winform 也在桌面客户端区域内时会发生这种情况。请注意,我说“光标位于表格之外”,而不是桌面区域。拖放完成后,我将光标放在表单区域内,在同一原始点,但不是。
  • 所以你正在移动表单,它确实移动了,因为它没有碰到边框,但光标仍然相对于表单移动?这应该会发生。 form_move 之类的是否有任何干扰代码?如果您创建一个新的干净项目并将just that code 粘贴到表单中,您会看到这种行为吗?
  • 不,我没有干涉任何事件。您可以看到我的问题,使用您发布给我的相同代码,然后尝试将表单从一个位置移动到另一个位置,您会看到鼠标光标不在表单上方,而是在表单之外。 (当您快速移动表格时会发生这种情况)。
  • 不,我无法重现。除非您在屏幕边框上点击表单,否则光标不会相对于表单移动。

标签: c# winforms


【解决方案1】:

This mdsdn page 会告诉你如何移动光标。

但是,根据您指出的上一篇文章,您似乎在玩弄 Windows。

除非您处理的计算机会被可能会走上前来并为下一个人搞砸的人在公共场合使用,否则您可能会认为这样的事情会让用户感到沮丧,而不是他们的帮助。

一个非常新手的用户可能会意外丢失您的应用程序的窗口,但如果他们是每天使用 PC 的员工,他们最终将不得不弄清楚这一点。

与此同时,您会让任何习惯使用计算机的人感到沮丧 - 并让他们发疯。

此外,您为自己做更多的工作,却没有获得任何额外的功能。

我不确定您要做什么,当然我在这方面可能是错误的,但通常情况下,不玩这些东西会更容易也更好。

【讨论】:

  • 我做了一些其他的测试。出现我的问题是因为 m.LParam 小于零,但是当我快速移动表单时,它似乎不会离开屏幕(这将导致负整数)。
  • @bit lParam 是一个指针,而不是一个值。顺便说一句,我已经更新了该问题中的代码以修复一个不相关的错误,但看看它是否也能神奇地修复你的行为。
  • 不,问题仍然存在..但也许这只是我的眼睛无法实时看到的东西。正如您所说,当表单被拖出屏幕时(显然)会出现问题。当我尝试移动表格(快速方式)时,我想不要离开屏幕,但在不知不觉中我只是去了那里。好的,请考虑关闭这篇文章,再次感谢您的新代码。
  • ..对不起..只有一件事:当屏幕外发生时是否可以防止鼠标移动事件?这样我就可以解决上面的问题了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-11
  • 1970-01-01
  • 2012-11-03
  • 1970-01-01
  • 2023-03-30
相关资源
最近更新 更多