[UWP]滚动到文本框中的特定文本? [英] [UWP] Scroll to specific text in textbox?

查看:150
本文介绍了[UWP]滚动到文本框中的特定文本?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的文本框中包含大量文本。  现在在文本中我有一个*

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()滚动到目标位置。您可以计算所需特定文本的horizo​​ntalOffset和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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆