键入时如何防止光标“跳转”到文本框中

时间:2010-08-17 20:01:53

标签: c# winforms mouse cursor mouse-cursor

如果您关注文本框但鼠标光标没有完全悬停在文本框上,则鼠标光标具有默认箭头形状或您定义的任何内容。

当你开始输入时,mousecursor会隐藏自己,你只能看到文本框中闪烁的IBeam类型光标。

问题:即使你开始输入,如何将mousecursor保持在初始位置?

有趣的是:在WPF应用程序中不会发生这种情况。

4 个答案:

答案 0 :(得分:2)

伙计们...这太荒谬了。在TextBox.KeyDown中,我必须每次都移动光标以指向它之前的位置..

 Cursor.Position = new Point( oldX, oldY ); 

这里唯一的丑陋 - 如果它是一个动画光标,动画每次都会重新开始。而且您也无法同时键入和移动鼠标。那 有点儿太糟糕了,另一方面谁在乎呢? Winform应用程序往往比WPF应用程序更丑陋,是不是真的?

答案 1 :(得分:1)

我要回答这个问题。副作用和影响是你的责任。还有另一种方法吗?我确定。

创建“状态”变量以保存用户是否正在键入的状态。文本框中有各种事件可以让您知道有人在打字,EN_CHANGE等等,整个事件系列等等。用户键入时将状态变量设置为true。不输入时为假,EN_LOSTFOCUS等

通过PreProcessMessage事件或PreTranslateMessage事件或任何看似合适的事件来捕获鼠标输入。

当状态变量为true时,在OnPaint事件中调用“ShowCursor”或可能的“SetCursor”。是的,毛茸茸的,呃。在状态变量为false时不要调用它。

此后调试,调试,调试。 HTH

如果发布不明确,我会扩大答案。

答案 2 :(得分:0)

这是Windows设置。

在“控制面板”下,转到“鼠标”,然后您会看到类似于“在键入时隐藏指针”的设置

答案 3 :(得分:0)

据我所知,没有办法做到这一点。即使在关闭Windows“键入时隐藏指针”设置后,如果光标不仅位于文本框上,而且位于整个表单上,光标也会消失。

文本框控件或影响此行为的表单的属性中似乎没有任何内容。