Поделиться через


ITextRange.Move(TextRangeUnit, Int32) Метод

Определение

Перемещает точку вставки вперед или назад на указанное количество единиц. Если текстовый диапазон является неразрожденным, он свернут до точки вставки в начале или конце текстового диапазона в зависимости от количества, а затем перемещается.

public:
 int Move(TextRangeUnit unit, int count);
int Move(TextRangeUnit const& unit, int const& count);
public int Move(TextRangeUnit unit, int count);
function move(unit, count)
Public Function Move (unit As TextRangeUnit, count As Integer) As Integer

Параметры

unit
TextRangeUnit

Единицы для перемещения точки вставки. Значение по умолчанию — Character.

count
Int32

int

Количество единиц для перемещения точки вставки. Значение по умолчанию — 1. Если число больше нуля, точка вставки перемещается вперед, к концу истории. Если число меньше нуля, точка вставки перемещается назад к началу истории. Если аргумент count равен нулю, диапазон не изменяется.

Возвращаемое значение

Int32

int

Фактическое количество единиц перемещения точки вставки. Дополнительные сведения см. в разделе «Примечания».

Комментарии

Если диапазон является дегенеративным (точка вставки), этот метод пытается переместить точку вставки на количество единиц, указанное в аргументе count.

Если диапазон не является порожденным и число больше нуля, этот метод сворачивает диапазон до точки вставки в конце диапазона, перемещает итоговую точку вставки вперед на границу единицы (если она еще не находится на единице), а затем пытается переместить число на 1 единицувперед. Если диапазон не является разроженным и число меньше нуля, этот метод сворачивает диапазон до точки вставки в начале диапазона, перемещает итоговую точку вставки назад к границе единицы (если она еще не находится на единице), а затем пытается переместить число на 1 единицуназад. Таким образом, в обоих случаях свертывание неразрожденного диапазона до точки вставки, независимо от того, переходит ли она к началу или концу единицы после сворачивания, считается единицей.

Этот метод возвращает количество фактически перемещенных единиц. Этот метод никогда не перемещает точку вставки за пределы истории этого диапазона. Если аргумент countunits перемещает точку вставки перед началом истории, точка вставки перемещается в начало истории и результат задается соответствующим образом. Аналогичным образом, если числоединицизмерения перемещает точку вставки за пределы конца истории, она перемещается в конец истории.

Count соответствует количеству нажатий клавиш CTRL+СТРЕЛКА ВПРАВО.

Например, если нажать клавиши CTRL+СТРЕЛКА ВПРАВО для выбора, показанного на обоих следующих рисунках, в итоге точка вставки будет отображаться в позиции символа 8, так как эта команда сворачивает выделенные фрагменты на их концах (7 и 8 соответственно) и перемещается к следующей границе Word.

Позиции символов для текстовой строки Первый фрагмент не включает пустой пробел в позиции символа 7, поэтому сочетание клавиш CTRL+СТРЕЛКА ВПРАВО перемещается за пробел на границу **Word** в позиции символа 8. Конечная позиция диапазона уже находится на границе **Word** для второго выделения, поэтому CTRL+СТРЕЛКА ВПРАВО просто сворачивает выделенный фрагмент на этой границе. Аналогичным образом, ctrl+стрелка влево, которая для этого текста действует как "Move(Word, -1)". Но СОЧЕТАНИЕ КЛАВИШ CTRL+СТРЕЛКА ВЛЕВО сворачивает второе выделение в позиции символа 4, а затем перемещается к нулю, так как это следующая граница **Word*** в направлении движения.

Возвращаемый аргумент равен количеству единиц, в которых перемещается точка вставки, включая одну единицу для сворачивания неразрожденного диапазона и перемещения его на границу единицы . Таким образом, если движение и сворачивание не происходят, как если диапазон является точкой вставки в конце истории, результат будет равен нулю. Этот подход полезен для управления циклами приложений, которые обрабатывают всю историю.

В обоих случаях, упомянутых ранее, вызов Move(Word, 1) задает результат, равный 1, так как диапазоны были свернуты. Аналогичным образом, вызов Move(Word, -1) задает результат равным – 1 в обоих случаях. Сворачивание с перемещением части единицы к границе единицы или без нее считается перемещенной единицей .

Направление движения относится к логическому упорядочению символов в резервном хранилище с открытым текстом. Такой подход позволяет избежать проблем геометрического упорядочения, таких как слева и справа, а также вверх и вниз в международном программном обеспечении. Такие геометрические методы по-прежнему необходимы в механизме редактирования, потому что клавиатуры имеют клавиши со стрелками для вызова геометрических движений.

Методы пользовательского интерфейса ITextSelection создают резервную копию для возврата каретки или перевода строки (CR/LF), как если бы это был один символ, но методы ITextRange.Move считают возврат каретки/перевода строки (CR/LF) как два символа. Очевидно, что в качестве разделителя абзаца лучше использовать один символ, который представлен cr, хотя символ разделителя абзаца Юникода, 0x2029, принимается. Как правило, элемент управления "Полнофункциональная правка" поддерживает возврат каретки и отправку строк (CR/LF), CR, LF, VT (вертикальная вкладка), FF (канал формы) и 0x2029. Microsoft Rich Edit 2.0 также поддерживает CR/CR/LF для обеспечения обратной совместимости.

См. также методы ITextRange.MoveStart и ITextRange.MoveEnd, которые перемещают начальные или конечные единицы количества позиций диапазона соответственно.

Применяется к

См. также раздел