C#, скрыть (убрать) курсор (каретку) из TextBox
Чтоб два раза не вставать, начну сразу с нескольких простейших манипуляций с курсором из TextBox.
Снятие выделения и управление местоположением курсора (каретки)Иногда текст в многострочном
TextBox'е автоматически выделяется.

И это выделение обычно не нужно. Благо снять его легко, достаточно переместить курсор.
Установка курсора в начало или конец текстаДля установки курсора в начало текста устанавливаем свойство
SelectionStart в
0. Т.е. устанавливаем курсор перед первым символом текста:
//ставим курсор в начало текста
txtSampleText.SelectionStart = 0;Установить курсор в конец текста тоже проблем не представляет:
//ставим курсор в конец текста
txtSampleText.SelectionStart = txtSampleText.Text.Length;Выделение исчезнет, а курсор будет в начале или конце текста.
Скрытие курсора переводом фокусаДля того, чтобы визуально скрыть текстовый курсор в
TextBox, можно перевести фокус на другой объект формы. Например, далее переведем фокус на кнопку
btnClose, находящуюся рядом с
TextBox:

//убираем курсор (сменой фокуса на другой элемент формы)
btnClose.Select();Но смена фокуса иногда влечет за собой нежелательные последствия, например текст нельзя будет прокручивать колесиком мышки. Если нужно, чтобы фокус оставался в
TextBox, а каретка (текстовый курсор) не отображалась, стоит воспользоваться WinAPI.
Использование WinAPI для скрытия текстового курсора (каретки)Сначала экспортируем WinAPI функцию:
public frmHideCaret()
{
InitializeComponent();
}
[System.Runtime.InteropServices.DllImport("user32.dll")]
private static extern bool HideCaret(IntPtr hWnd);
//...Потом вызываем ее в обработчике события
Shown (если вызвать, например в
Load не сработает, надо чтобы форма появилась):
private void frmHideCaret_Shown(object sender, EventArgs e)
{
HideCaret(txtSampleText.Handle);
}Весь пример на GitHubСмотреть в репозитарииЭто репост с сайта http://tolik-punkoff.com
Оригинал: http://tolik-punkoff.com/2019/10/16/c-skryt-ubrat-kursor-karetku-iz-textbox/