Как называется полоса прокрутки в visual studio

Обновлено: 04.07.2024

Когда вы работаете с длинными файлами кода, может быть трудно запомнить расположение элементов в файле. Вы можете настроить полосу прокрутки в редакторе кода, чтобы лучше понимать, что происходит в коде.

Заметки

Можно выбрать, должны ли на полосе прокрутки отображаться заметки, такие как изменения в коде, точки останова, закладки, ошибки и положение курсора.

Откройте страницу параметров Полосы прокрутки. Для этого последовательно выберите Средства > Параметры > Текстовый редактор > Все языки > Полосы прокрутки.

Установите флажок Показывать примечания над вертикальной полосой прокрутки, а затем выберите нужные заметки. Доступны следующие заметки:

  • изменения
  • метки
  • ошибки
  • положение курсора.

Параметр Показывать метки включает точки останова и закладки.

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

Вот как выглядит полоса прокрутки после поиска строки. Обратите внимание, что все экземпляры строки отображаются на полосе прокрутки.

Полоса прокрутки в Visual Studio после поиска строки

Вот как выглядит полоса прокрутки после замены всех экземпляров строки. Красные метки на полосе прокрутки обозначают места, где из-за изменения текста появились ошибки.

Полоса прокрутки в Visual Studio после замены строки с ошибками

Режимы отображения

У полосы прокрутки есть два режима: режим полосы и режим карты.

Режим полосы

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

Режим карты

В режиме карты показано миниатюрное изображение строк кода на полосе прокрутки. Вы можете задать ширину столбца карты, выбрав определенное значение для параметра Обзор исходного кода. Чтобы при наведении указателя на карту отображалось более широкое окно предварительного просмотра кода, выберите Показывать подсказку предварительного просмотра. Свернутые области затенены иначе. Они развертываются, если дважды щелкнуть их.

Можно отключить миниатюрное представление кода в режиме карты. Для этого задайте для параметра Обзор исходного кода значение Выкл. Если установлен флажок Показывать подсказку предварительного просмотра, окно предварительного просмотра кода все так же будет отображаться в том расположении на полосе прокрутки, на которое вы наведите указатель. А если щелкнуть эту точку, курсор по-прежнему будет в нее перемещаться.

На следующем изображении показано, как выглядит пример поиска в режиме карты со средней шириной:

Полоса прокрутки Visual Studio в режиме карты

На следующем рисунке показано, как работает параметр Показывать подсказку предварительного просмотра:

Полоса прокрутки Visual Studio и окно с подсказкой

Чтобы изменить цвета, отображаемые в режиме карты, последовательно выберите Сервис > Параметры > Среда > Шрифты и цвета. Затем в разделе Отображаемые элементы выберите любой из элементов, которому предшествует "Overview" (Обзор), измените цвета, а затем нажмите кнопку ОК.

Компания Microsoft считает, что Visual Studio - это инструмент повышения производительности для разработчиков, а не только место, где можно редактировать код. Поэтому Visual Studio содержит в себе огромный функционал для оказания помощи разработчикам. Visual Studio 2013 призвана помочь разработчикам писать более эффективный и открытый код. Эта статья описывает некоторые из этих функций.

Описание кода

Когда вы исследуете код, зачастую необходимо быстро ознакомиться с реализацией вызываемого метода. Если вы щелкните правой кнопкой мыши по имени вызываемого метода и выберите в контекстном меню команду Go to Definition, Visual Studio откроет файл с реализацией данного метода. Однако, файл, который вы редактировали, окажется уже не в фокусе. Это конечно не непреодолимая проблема, но это неудобно.

Команда Peek Definition позволяет разработчикам просматривать определение метода, не выходя из контекста текущей области редактирования. Чтобы убедиться в этом, щелкните правой кнопкой мыши по имени метода и выберите в контекстном меню команду Peek Definition:

Команда Peek Definition в Visual Studio

Помимо просмотра кода реализации, команда Peek Definition позволяет редактировать его. Наведя курсор мыши на метод в окне кода реализации, вы можете щелкнуть правой кнопкой мыши и выбрать Peek Definition, чтобы углубиться в реализации перегруженных версий этого метода или определения других методов. Когда вы углубляетесь более чем на один уровень, появляется коллекция белых и синих кружочков, позволяющих перемещаться вперед и назад по иерархии вызовов:

Перемещение по нескольким реализациям метода с помощью Peek Definition в Visual Studio

Если вы хотите переместить окно Pick Window (с определением метода), можете использовать значок в закладке с именем файла, справа от названия файла.

Расширенные возможности полосы прокрутки

Расширенная полоса прокрутки - это один из наиболее популярных визуальных компонентов Visual Studio Productivity Power Tools, показывающий информацию о файле, который в данный момент редактируется. С помощью полосы прокрутки можно легко увидеть в каком месте кода находятся ошибки и предупреждения, точки останова, закладки и результаты поиска. На рисунке ниже показаны некоторые цветные маркеры полосы прокрутки:

Цветные маркеры полосы прокрутки Visual Studio

Настройки подсветки полосы прокрутки в Visual Studio

В разделе Behaviour переключатель позволяет выбрать режим вертикальной полосы прокрутки: бар (по умолчанию) или карта. В режиме карты вы можете включить подсказки при просмотре. На рисунке ниже показана полоса прокрутки в режиме карты:

Полоса прокрутки в режиме Map

Исходный код в карте полосы прокрутки предназначен для обеспечения высокого уровня визуального представления кода при редактировании файла, т.е. вы не должны разобрать сам код, а должны просто увидеть его наглядную структуру в документе. Цель этого режима полосы прокрутки заключается в визуальной помощи при навигации по документы с большим объемом кода.

При наведении курсора на полосу прокрутки в режиме Map, слева от курсора отображается всплывающая подсказка с информацией о коде, который располагается в данной части документа:

Подсказка для полосы прокрутки в режиме Map

Идея заключается в удобной функции предварительного просмотра, чтобы вы смогли найти нужный код, не используя при этом прокрутку документа.

Navigate To

Команда Navigate То - мощный инструмент поиска в системе Visual Studio, появившийся в версии 2010 и обеспечивающий альтернативу стандартным функциям поиска символов. Как и команда Find Symbol, команда Navigate То ограничена лишь поиском символов; для того чтобы оценить ее полезность, следует рассмотреть большое количество отличий между нею и командой Find Symbol.

В противоположность команде Find Symbol команда Navigate То выводит результаты по мере того, как пользователь вводит поисковый запрос. Чем больше текста запроса набрано, тем уже становится множество результатов. Дважды щелкнув на одном из результатов, пользователь может закрыть диалоговое окно и перейти к этому результату.

Одно из наиболее важных свойств команды Navigate То заключается в том, как именно она выполняет поиск. Допустим, пользователь ищет метод класса ProductSummary. В этом инструменте поиска пробелы, по существу, играют роль оператора AND, поэтому в ответ на запрос "prod sum" (т.е. на поиск имен prod и sum в одном и том же модуле) команда возвращает класс ProductSummary точно так же, как в ответ на запрос sum prod.

В предыдущих версиях Visual Studio команда Navigate То открывала одноименное модальное окно для поиска. Такой подход является неудобным и отрывает программиста от рабочего процесса написания кода. В Visual Studio 2013 эта команда получила гибкий графический интерфейс. Для запуска поиска Navigate То можно использовать горячие клавиши Ctrl+, или команду меню Edit --> Navigate To, при этом откроется маленькое плавающее окно справа вверху:

Окно Navigate To

Когда вы начинаете вводить символы в строке панели Navigate То, Visual Studio использует семантический поиск для отображения списка совпадений. Другими словами, вместо простого текстового поиска, Visual Studio использует свое понимание классов и методов в коде проекта в качестве релевантного поиска. Клавиша Esc закрывает окно навигации и позволяет вернуться в исходное положение.

Другое уникальное свойство команды Navigate То заключается в том, что она выполняет поиск, используя "верблюжий стиль". Для того чтобы найти класс ProductSummary, можно набрать в запросе PS (прописные буквы из имени), чтобы получить искомый метод в качестве результата - очень мощное свойство, доступное только в этом инструменте поиска.

Это диалоговое окно позволяет изменять стандартное поведение полосы прокрутки редактора кода. Чтобы отобразить эти параметры, выберите в меню Сервис пункт Параметры. В папке Текстовый редактор разверните вложенную папку Все языки, а затем выберите Полосы прокрутки.

На этой странице задаются параметры по умолчанию для всех языков разработки. Сброс параметра в этом диалоговом окне приведет к возврату параметров полос прокрутки для всех языков к выбранному здесь значению. Чтобы изменить параметры текстового редактора только для одного языка, раскройте подпапку для этого языка и выберите соответствующие страницы параметров.

Показывать горизонтальную полосу прокрутки

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

Показывать вертикальную полосу прокрутки

Если этот флажок установлен, отображается вертикальная полоса прокрутки, позволяющая выполнять прокрутку вверх и вниз при просмотре элементов, выходящих за пределы видимой области редактора. Если вертикальные полосы прокрутки недоступны, для прокрутки можно использовать клавиши PAGE UP, PAGE DOWN и клавиши управления курсором.

Отображение

Показывать заметки над вертикальной полосой прокрутки

Выберите, будет ли вертикальная полоса прокрутки отображать следующие заметки:

  • изменения
  • метки
  • ошибки
  • положение курсора.

Параметр Показывать метки включает точки останова и закладки.

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

О значении различных цветов и символов при редактировании кода можно узнать из статьи о расширенной полосе прокрутки.

Поведение

У полосы прокрутки есть два режима: режим полосы и режим карты.

Использовать режим полосы для вертикальной полосы прокрутки

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

Использовать режим карты для вертикальной полосы прокрутки

Если в режиме карты щелкнуть определенную точку полосы прокрутки, вместо простой прокрутки страницы вверх или вниз курсор переместится в это расположение в файле. На полосе прокрутки показано миниатюрное изображение строк кода. Вы можете задать ширину столбца карты, выбрав определенное значение для параметра Обзор исходного кода. Чтобы при наведении указателя на карту отображалось более широкое окно предварительного просмотра кода, выберите Показывать подсказку предварительного просмотра. Свернутые области затенены иначе. Они развертываются, если дважды щелкнуть их.

Можно отключить миниатюрное представление кода в режиме карты. Для этого задайте для параметра Обзор исходного кода значение Выкл. Если установлен флажок Показывать подсказку предварительного просмотра, окно предварительного просмотра кода все так же будет отображаться в том расположении на полосе прокрутки, на которое вы наведите указатель. А если щелкнуть эту точку, курсор по-прежнему будет в нее перемещаться.

Прокрутка необходима, если нужно поместить большой объем содержимого в ограниченную область. Для обеспечения прокрутки в WPF необходимо упаковать соответствующее содержимое в элемент ScrollViewer.

Объект ScrollViewer может содержать все, что угодно, но обычно это контейнер компоновки. Ниже представлен пример прокрутки:

Включение прокрутки

Если в этом примере изменить размер окна, чтобы его размера хватило на все содержимое, полоса прокрутки станет неактивной, хотя и останется видимой. Этим поведением можно управлять с помощью свойства VerticalScrollBarVisibility, которое принимает одно из значений из перечисления ScrollBarVisibility. Стандартное значение Visible обеспечивает постоянное присутствие вертикальной полосы прокрутки. Значение Auto применяется, если нужно, чтобы полоса прокрутки появлялась, когда она нужна, и исчезала, когда не нужна. А значение Disabled позволяет полностью скрывает полосу прокрутки.

Есть еще значение Hidden, которое похоже на Disabled, но с небольшими отличиями. Во-первых, содержимое со скрытой полосой прокрутки все-таки можно прокручивать (например, с помощью клавиш со стрелками). Во-вторых, содержимое в ScrollViewer располагается по-другому. Используя Disabled, вы указываете, что содержимое в ScrollViewer может располагать только пространством самого элемента ScrollViewer. А использование Hidden указывает, что содержимое располагает неограниченным пространством. То есть оно может выходить за пределы прокручиваемой области.

Обычно значение Hidden используется, если предполагается выполнять прокрутку с помощью другого механизма (например, пользовательских кнопок прокрутки). А значение Disabled используется только если нужно временно запретить элементу ScrollViewer выполнять любые действия вообще.

Элемент ScrollViewer поддерживает и горизонтальную прокрутку. Однако по умолчанию свойство HorizontalScrollBarVisibility имеет значение Hidden. Для использования горизонтальной прокрутки необходимо изменить это значение на Visible или Auto.

Программная прокрутка

Для прокрутки окна, изображенного на рисунке, можно щелкнуть мышью на полосе прокрутки, можно поместить курсор над сеткой и использовать колесико мыши, можно перемещаться по элементам управления с помощью клавиши табуляции, либо можно щелкнуть где-то на пустом месте сетки и воспользоваться клавишами управления курсором. Если этого вам все еще мало, можно использовать методы класса ScrollViewer для программной прокрутки содержимого:

Наиболее понятны методы LineUp() и LineDown(), которые эквивалентны щелчкам на кнопках со стрелками на концах вертикальной полосы прокрутки для смещения вверх или вниз.

Можно также использовать методы PageUp() и PageDown(), которые прокручивают содержимое на один экран вверх или вниз и эквивалентны щелчкам на поверхности полосы прокрутки выше или ниже ползунка.

Существуют аналогичные методы для горизонтальной прокрутки: LineLeft(), LineRight(), PageLeft() и PageRight().

И, наконец, имеются методы ScrollToXxx() для перемещения в некоторые конкретные места. Для вертикальной прокрутки это методы ScrollToEnd() и ScrollToHome(), которые выполняют сдвиг в конец или начало прокручиваемого содержимого, и ScrollToVerticalOffset(), который выполняет сдвиг в конкретную позицию. Имеются и горизонтальные варианты этих методов: ScrollToLeftEnd(), ScrollToRightEnd() и ScrollToHorizontalOffset().

Специальные способы прокрутки

Встроенные в ScrollViewer способы прокрутки весьма полезны. Они позволяют выполнять плавную прокрутку любого содержимого — от сложных векторных изображений до сетки с элементами. Однако одной из наиболее интересных возможностей класса ScrollViewer является то, что он позволяет содержимому принимать участие в процессе прокрутки. Вот как это работает:

Помещаете прокручиваемый элемент внутри элемента ScrollViewer. Это может быть любой элемент, реализующий интерфейс IScrollInfo.

Указываете объекту ScrollViewer, что содержимое знает, как выполнять прокрутку, для этого нужно установить свойство ScrollViewer.CanContentScroll равным true.

При задействовании элемента ScrollViewer (с помощью полосы прокрутки, колесика мыши, методов прокрутки и т.д.) он вызывает соответствующие методы вложенного элемента с помощью интерфейса IScrollInfo. Затем этот элемент выполняет собственную специализированную прокрутку.

В интерфейсе IScrollInfo определен набор методов, которые реагируют на различные действия прокрутки. Например, он содержит многие методы прокрутки, имеющиеся в ScrollViewer, такие как LineUp(), LineDown(), PageUp() и PageDown(). Кроме того, в нем имеются методы реагирования на колесико мыши.

Интерфейс IScrollInfo реализован в очень немногих элементах. Одним из них является контейнер StackPanel. В его реализации IScrollInfo используется логическая прокрутка, т.е. прокрутка, которая выполняет перемещение от элемента к элементу, а не от строки к строке.

Если поместить элемент StackPanel на ScrollViewer без установки свойства CanContentScroll, то вы получите обычное поведение. Прокрутка вверх и вниз выполняет сдвиги по нескольку пикселей. Но если задать свойство CanContentScroll равным true, то при каждом щелчке вниз будет выполняться прокрутка до начала следующего элемента.

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

Читайте также: