以编程方式启用 RichTextBox 并显示插入符号
Programatically enable RichTextBox and show caret
对于我目前正在处理的应用程序,我有一个以编程方式多次添加到表单的用户控件。用户控件的一部分是一个 RichTextBox,它设置为透明并禁用了点击功能,因此它更像一个标签并融入了用户控件。
当用户故意点击用户控件时,RichTextBox 的背景变为白色,IsReadOnly
设置为 False,并启用点击。
我试图纠正的问题是,用户仍然必须在键入之前再次单击 RichTextBox 以启用插入符号。我所有以编程方式设置插入符号的谷歌搜索和代码尝试都没有奏效。关于为什么以下代码不起作用的任何建议?我还需要做什么吗?
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
})
);
对于我目前正在处理的应用程序,我有一个以编程方式多次添加到表单的用户控件。用户控件的一部分是一个 RichTextBox,它设置为透明并禁用了点击功能,因此它更像一个标签并融入了用户控件。
当用户故意点击用户控件时,RichTextBox 的背景变为白色,IsReadOnly
设置为 False,并启用点击。
我试图纠正的问题是,用户仍然必须在键入之前再次单击 RichTextBox 以启用插入符号。我所有以编程方式设置插入符号的谷歌搜索和代码尝试都没有奏效。关于为什么以下代码不起作用的任何建议?我还需要做什么吗?
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
})
);