在只读TextBox中将光标移到文本末尾

3

我目前在我的WPF应用程序中有一个只读的TextBox:

<TextBox x:Name="TextBox_CurrentDirectory" IsReadOnly="True"></TextBox>

并且文本在代码后端得到更新:

private void Window_Loaded(object sender, RoutedEventArgs e)
{
    var app = Application.Current as App;
    TextBox_CurrentDirectory.Text = app.ActiveDirectory;
    //Show the end of the text here
}

有没有一种方法可以通过编程方式显示文本的结尾?如果TextBox中的文本比TextBox更长,则仅显示开头并被截断。我想能够显示文本的结尾。

我尝试使用

TextBox_CurrentDirectory.CaretIndex = TextBox_CurrentDirectory.Text.Length;

但是什么都没有发生。
1个回答

4

在设置 CaretIndex 之前,您需要让文本框获得焦点。

TextBox_CurrentDirectory.Text = app.ActiveDirectory;
TextBox_CurrentDirectory.Focus();
TextBox_CurrentDirectory.CaretIndex = TextBox_CurrentDirectory.Text.Length;

谢谢指出这个问题!已经修复了复制/粘贴问题。它完美地运行了,非常感谢 :) - miguelarcilla
我认为 OP 只想展示文本的结尾,而不关心插入符位置。所以只需要调用 ScrollToEnd() 方法就可以了,是吗? - King King
1
@KingKing - 我也曾这样想过,但在我的测试中它并没有起作用。我认为像那样调用 ScrollToEnd 可能是针对多行文本框的。 - keyboardP
@miguelarcilla - 不客气 :) 我刚刚更新了答案。如果在CaretIndex之前设置焦点,您根本不需要调用ScrollToEnd。 - keyboardP
@keyboardP 这很有道理,我想我忘记了你需要将焦点放在文本框上才能使用插入符号。 - miguelarcilla

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接