Как предотвратить "прыжок" курсора в текстовое поле при вводе - PullRequest
2 голосов
/ 18 августа 2010

Если у вас есть фокус на текстовом поле, но курсор мыши не совсем на нем, курсор мыши имеет форму стрелки по умолчанию или что-то еще, что вы определяете.

В тот момент, когда вы начинаете печатать, курсор мыши прячется и в текстовом поле вы видите только мигающий курсор типа IBeam.

Вопрос: Как удерживать курсор мыши в исходном положении, даже если вы начинаете печатать?

Интересно, что этого не происходит в приложениях WPF.

Ответы [ 4 ]

2 голосов
/ 18 августа 2010

Ребята ... Это было просто смешно. В TextBox.KeyDown мне нужно перемещать курсор каждый раз, чтобы указать, где он был раньше ..

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

Единственная уродливая вещь здесь - если это анимированный курсор, анимация начинается снова и снова. А также вы не можете печатать и перемещать мышь одновременно. Тот добрый сосать, с другой стороны, кого это волнует? Приложения Winform более уродливы, чем приложения WPF, не правда ли?

1 голос
/ 18 августа 2010

Я собираюсь ответить на вопрос.Побочные эффекты и последствия - ваша ответственность.Есть ли другой способ сделать это?Я уверен.

Создайте переменную «state» для хранения состояния, печатает ли пользователь или нет.В текстовых полях есть различные события, которые позволяют вам знать, когда кто-то печатает, EN_CHANGE и т. Д., Это целое семейство событий и так далее.Установите переменную состояния true, когда пользователь печатает.False, когда не набирается, EN_LOSTFOCUS и т. Д.

Перехватывает ввод мыши через событие PreProcessMessage или PreTranslateMessage, или любое другое, которое кажется подходящим.

Вызовите «ShowCursor» или потенциально «SetCursor» в OnPaintсобытие, в то время как переменная состояния имеет значение true.Да, волосатые, даНе вызывайте его, пока переменная состояния имеет значение false.

Debug, debug, debug после этого.HTH

Если это не ясно, пост, и я расширю свой ответ.

0 голосов
/ 18 августа 2010

Насколько я знаю, это невозможно сделать. Даже после отключения параметра Windows «Скрыть указатель при наборе текста» курсор исчезнет, ​​если он будет расположен не только над текстовым полем, но и над всей формой.

Кажется, что в свойствах элемента управления textbox или в форме ничего не влияет на это поведение.

0 голосов
/ 18 августа 2010

Это настройка Windows.

В Панели управления перейдите к Мышь, и затем вы увидите настройку, похожую на «Скрыть указатель при наборе»

...