Для приложения, над которым я сейчас работаю, у меня есть 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;
Я думаю, что вам не хватает настройки фокуса логики и клавиатуры для вашего контроля. Пытаться
Dispatcher.BeginInvoke(
new Action(delegate()
{
contentBox.Focus(); // Set Logical Focus
System.Windows.Input.Keyboard.Focus(contentBox); // Set Keyboard Focus
})
);