【问题标题】:Programatically enable RichTextBox and show caret以编程方式启用 RichTextBox 并显示插入符号
【发布时间】:2015-04-02 01:32:25
【问题描述】:

对于我目前正在处理的应用程序,我有一个用户控件,它以编程方式多次添加到表单中。用户控件的一部分是一个 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;

【问题讨论】:

    标签: c# wpf wpf-controls richtextbox caret


    【解决方案1】:

    我认为您缺少的是之后将逻辑和键盘焦点设置为您的控件。 试试

    Dispatcher.BeginInvoke(
        new Action(delegate()
        {
            contentBox.Focus();         // Set Logical Focus
            System.Windows.Input.Keyboard.Focus(contentBox); // Set Keyboard Focus
        })
    );
    

    【讨论】:

    • 就是这样!,我之前有这两行但没有我的插入符号代码,没有意识到你需要这两个部分。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-06
    • 2021-10-06
    • 2022-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-04
    相关资源
    最近更新 更多