Чтоб два раза не вставать, начну сразу с нескольких простейших манипуляций с курсором из TextBox
.
Иногда текст в многострочном TextBox
‘е автоматически выделяется.
И это выделение обычно не нужно. Благо снять его легко, достаточно переместить курсор.
Для установки курсора в начало текста устанавливаем свойство SelectionStart
в 0
. Т.е. устанавливаем курсор перед первым символом текста:
//ставим курсор в начало текста
txtSampleText.SelectionStart = 0;
Установить курсор в конец текста тоже проблем не представляет:
//ставим курсор в конец текста
txtSampleText.SelectionStart = txtSampleText.Text.Length;
Выделение исчезнет, а курсор будет в начале или конце текста.
Для того, чтобы визуально скрыть текстовый курсор в TextBox
, можно перевести фокус на другой объект формы. Например, далее переведем фокус на кнопку btnClose
, находящуюся рядом с TextBox
:
//убираем курсор (сменой фокуса на другой элемент формы)
btnClose.Select();
Но смена фокуса иногда влечет за собой нежелательные последствия, например текст нельзя будет прокручивать колесиком мышки. Если нужно, чтобы фокус оставался в TextBox
, а каретка (текстовый курсор) не отображалась, стоит воспользоваться 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); }