Программно включить RichTextBox и показать каретку

1

Для приложения, над которым я сейчас работаю, у меня есть usercontrol, который добавляется в форму программно несколько раз. Часть usercontrol - это RichTextBox, которая настроена на прозрачность и отключена функция щелчка, так что она действует как ярлык и вписывается в пользовательский элемент управления.

Когда пользовательский контроль намеренно щелкает пользователь, фон RichTextBox изменяется на белый, для IsReadOnly установлено значение False, а щелчок включен.

Проблема, которую я пытаюсь исправить, заключается в том, что пользователю по-прежнему нужно щелкнуть по RichTextBox второй раз, чтобы включить каретку перед вводом. Все мои попытки Google и попытки программирования программного набора каретки не работали. Любые предложения относительно того, почему приведенный ниже код не работает? Есть что-то еще, что мне нужно сделать?

 contentBox.IsHitTestVisible = true;
 contentBox.Background = new SolidColorBrush(Color.FromRgb(240, 240, 240));
 contentBox.IsReadOnly = false;
 //manage caret position
 TextPointer newPointer = contentBox.CaretPosition;
 newPointer = newPointer.DocumentEnd;
 contentBox.CaretPosition = newPointer;
Теги:
wpf
richtextbox
caret
wpf-controls

1 ответ

1
Лучший ответ

Я думаю, что вам не хватает настройки фокуса логики и клавиатуры для вашего контроля. Пытаться

Dispatcher.BeginInvoke(
    new Action(delegate()
    {
        contentBox.Focus();         // Set Logical Focus
        System.Windows.Input.Keyboard.Focus(contentBox); // Set Keyboard Focus
    })
);
  • 1
    Вот и все! У меня были эти две строки ранее, но без моего кода Карета я не понимал, что вам нужны обе части. Спасибо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню