Просто для полноты картины, мне нужна такая функциональность для использования с DevExpress WinForms TextEdit
control.
Они уже делают Provid e a 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()
где угодно, например, в конструкторе вашей формы, который содержит элемент управления редактирования текста.
Возможно, это полезно кому-то в будущем.
Не забывайте `using System.Runtime.InteropServices;` и `ShowCaret (IntPtr hWnd);` – Sam 2010-02-13 16:10:06