Просто для полноты мне понадобился такой функционал для использования с DevExpress WinForms TextEdit
control .
Они уже предоставляют методы ShowCaret
и HideCaret
, к сожалению, они защищены. Поэтому я создал производный класс, который обеспечивает функциональность. Вот полный код:
public class MyTextEdit : TextEdit
{
private bool _wantHideCaret;
public void DoHideCaret()
{
HideCaret();
_wantHideCaret = true;
}
public void DoShowCaret()
{
ShowCaret();
_wantHideCaret = false;
}
protected override void OnGotFocus(EventArgs e)
{
base.OnGotFocus(e);
if (_wantHideCaret)
{
HideCaret();
}
}
}
Чтобы использовать код, просто используйте производный класс вместо исходного класса TextEdit
в своем коде и вызывайте DoHideCaret()
где угодно, например, в конструкторе вашей формы, который содержит элемент управления для редактирования текста.
Может быть, это пригодится кому-то в будущем.