0

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

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

即使我们尝试实现相关书籍中的示例(例如 Eric White 的“GDI+ Programming-Creating Custom Controls Using C#”中的 SimpleLineControl),我们也有相同的行为。

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

4

0 回答 0