none
ITextSelection的Move以及MoveXXXX方法如何使用? RRS feed

  • 问题

  • ITextSelection接口下有这样一组方法:Move/MoveDown/MoveLeft/MoveRight/MoveUp. 具体在使用时,传入相应的参数却不知道如何得出想要的内容。

    场景:界面上放置一个RichEditBox,一个Button,一个TextBlock,在RichEditBox中输入有 若干段落的内容,点击Button执行某一个Move的方法(指定任何一个均可,因为函数调用方式相同,目的就是为了了解其执行),期望得到移动后得到的段落内容。

    在Button的点击事件中,我使用了(MyEditor是RichEditBox的Name)

    MyEditor.Document.Selection.MoveDown(TextRangeUnit.Paragraph, 1, false);

    之后我通过MyEditor.Document.Selection.Text什么也没有得到。

    问题:

    1. 如果没有选中任何内容,Move系列的方法应该是移动光标位置的,但点击按钮时RichEditBox失去焦点,这样有影响吗? 

    2. Move系列的方法的返回值到底是什么?索引还是数量?

    3. 怎样获取到移动后的段落内容?

    2012年6月8日 3:31

答案

  • 1. 如果没有选中任何内容,Move系列的方法应该是移动光标位置的,但点击按钮时RichEditBox失去焦点,这样有影响吗?

    有影响。Move系列只做光标的移动,不做选中操作,所以没有焦点则光标没有了。

    2. Move系列的方法的返回值到底是什么?索引还是数量?

    文档给出说明 http://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.text.itextselection.movedown.aspxThe number of units that the insertion point or active end moved down. Collapsing the selection counts as one unit.

    基于你指定的移动单位而最终成功移动的单位数量。MyEditor.Document.Selection.MoveDown(TextRangeUnit.Paragraph, 1, false); 如果成功则返回1,移动一个单位的段落。

    3. 怎样获取到移动后的段落内容?

    获取内容,也就是说你要让RichEditBox选中你要的内容,那么你根本就不需要Move动作,只需要指定

    MyEditor.Document.Selection.StartPosition 和 MyEditor.Document.Selection.EndPosition 即可,然后 MyEditor.Document.Selection.Text 则为你选中的内容,或者通过 GetText 也能拿到。

    你如果要通过代码选中光标当前一段,则可以:

                MyEditor.Document.Selection.MoveDown(TextRangeUnit.Paragraph, 1, false); 
                MyEditor.Document.Selection.StartPosition = 0;


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    2012年6月11日 9:19
    版主