无法在指定时间更改WinForms控件中的光标

时间:2013-08-08 10:52:38

标签: winforms cursor controls windows-forms-designer design-time

我们有一个WinForms控件(继承Systems.Windows.Forms.Control)并附加了一个自定义设计器(继承ControlDesigner)。我们需要在设计时处理一些鼠标事件,例如我们控件内部特殊区域的点击。为了表明鼠标点击在该区域可用,我们需要将默认的4箭头光标更改为其他内容 - 至少是标准箭头,但我们找不到这样做的方法。

我们重新定义了ControlDesigner.GetHitTest方法,以便为该特殊点击矩形返回true,但光标在区域上方时会闪烁。它会更改为默认箭头几毫秒,然后返回到4箭头光标,这意味着可以选择整个控件并在窗体上移动。覆盖ControlDesigner.OnSetCursor没有任何影响,因为只有当光标更改为默认的4箭头光标时才会调用此虚方法。使用WndProc(试图拦截WM_MOUSE *事件)的游戏也没有给我们带来任何积极的结果。

即使我们尝试从相关书籍中实现样本(例如来自Eric White的“GDI +编程 - 使用C#创建自定义控件”的SimpleLineControl),我们也有相同的行为。

我们的开发环境是VS2010 / .NET 4.0,这是最低要求。如何使它在这个和以后的环境中工作?

0 个答案:

没有答案