如果您将焦点放在文本框上,但鼠标光标未完全悬停在其上,则鼠标光标具有默认箭头形状或您定义的任何形状。
在您开始输入时,鼠标光标会自行隐藏,您只会在文本框中看到闪烁的 IBeam 类型光标。
问题:即使您开始打字,如何将鼠标光标保持在其初始位置?
有趣的是:这不会发生在 WPF 应用程序中。
如果您将焦点放在文本框上,但鼠标光标未完全悬停在其上,则鼠标光标具有默认箭头形状或您定义的任何形状。
在您开始输入时,鼠标光标会自行隐藏,您只会在文本框中看到闪烁的 IBeam 类型光标。
问题:即使您开始打字,如何将鼠标光标保持在其初始位置?
有趣的是:这不会发生在 WPF 应用程序中。
伙计们......这太容易了。在 TextBox.KeyDown 中,我必须每次移动光标以指向它之前的位置。
Cursor.Position = new Point( oldX, oldY );
这里唯一丑陋的东西 - 如果它是一个动画光标,动画每次都会重新开始。而且您不能同时键入和移动鼠标。这有点糟糕,另一方面,谁在乎呢?Winform 应用程序往往比 WPF 应用程序更丑,不是吗?
我要回答这个问题。副作用和后果是您的责任。还有另一种方法吗?我确定。
创建一个“状态”变量来保存用户是否正在输入的状态。文本框有各种事件让您知道有人在打字时、EN_CHANGE 等、整个事件系列等等。用户键入时将状态变量设置为 true。不输入时为 False,EN_LOSTFOCUS 等。
通过 PreProcessMessage 事件或 PreTranslateMessage 事件或任何看起来合适的事件捕获鼠标输入。
当状态变量为真时,在 OnPaint 事件中调用“ShowCursor”或可能的“SetCursor”。是的,毛茸茸的,嗯。当状态变量为假时不要调用它。
在此之后调试,调试,调试。高温高压
如果这不是明确的帖子,我会扩大我的答案。
这是 Windows 设置。
在控制面板下,转到鼠标,然后您应该会看到类似于“键入时隐藏指针”的设置
据我所知,没有办法做到这一点。即使关闭了 Windows 的“键入时隐藏指针”设置,如果光标不仅位于文本框上,而且位于整个表单上,它也会消失。
文本框控件或影响此行为的表单的属性中似乎没有任何内容。