[UWP]滚动到文本框中的特定文本? [英] [UWP] Scroll to specific text in textbox?
问题描述
我的文本框中包含大量文本。 现在在文本中我有一个*
I have Textbox with a large amount of text. In the text now and again I have a *
当用户按下<我希望文本框滚动到上一个*
When the user presses < I want the text box to scroll to the previous *
当用户按下>我希望文本框滚动到下一个*
When the user presses > I want the textbox to scroll to the next *
推荐答案
Hi
qualar1
要滚动到文本框中的特定文本,您可以尝试找出文本框的ScrollViewer。然后你可以尝试使用
来使用ScrollViewer。
ChangeView()滚动到目标位置。您可以计算所需特定文本的horizontalOffset和verticalOffset,然后滚动到偏移量。
您可以参考以下代码在文本框中获取ScrollViewer:
public static IEnumerable<FrameworkElement> Children(FrameworkElement element)
{
Func<DependencyObject, List<FrameworkElement>> recurseChildren = null;
recurseChildren = (parent) =>
{
var list = new List<FrameworkElement>();
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(parent); i++)
{
var child = VisualTreeHelper.GetChild(parent, i);
if (child is FrameworkElement)
list.Add(child as FrameworkElement);
list.AddRange(recurseChildren(child));
}
return list;
};
var children = recurseChildren(element);
return children;
}
private void MyTextBox_KeyDown(object sender, KeyRoutedEventArgs e)
{
var textboxScroll = Children(MyTextBox).First(x => x is ScrollViewer) as ScrollViewer;
textboxScroll.ChangeView(null, 0, null);
}
此外,我建议你可以使用
RichEditBox类。您可以将RichEditBox的选择设置为"*"所在的位置。
Besides, I suggest that you could use RichEditBox Class instead. You could set the selection of RichEditBox to the position where "*" is.
祝你好运,
Roy
这篇关于[UWP]滚动到文本框中的特定文本?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!