Как сделать ползунок в windows forms

Обновлено: 07.07.2024

В формах Windows TextBox играет важную роль. С помощью TextBox пользователь может вводить данные в приложение, оно может быть одной строкой или несколькими строками. В TextBox вам разрешено устанавливать полосы прокрутки при работе с многострочным TextBox с помощью свойства ScrollBars TextBox. Значение по умолчанию этого свойства в форме Windows, вы можете установить это свойство двумя различными способами:

1. Время разработки: это самый простой способ установить свойство ScrollBars TextBox, как показано в следующих шагах:

  • Шаг 1: Создайте форму окна.
    Visual Studio -> Файл -> Создать -> Проект -> WindowsFormApp
  • Шаг 2: Перетащите элемент управления TextBox из панели инструментов и поместите его в форму окна. Вы можете разместить TextBox в любом месте окна формы в соответствии с вашими потребностями. Как показано на рисунке ниже:
  • Шаг 3: После перетаскивания вы перейдете к свойствам элемента управления TextBox, чтобы установить свойство ScrollBars для TextBox.


Выход:

Примечание. Помните, что горизонтальные полосы прокрутки не будут отображаться, если для свойства WordWrap установлено значение true, независимо от значения свойства ScrollBars.

2. Время выполнения: это немного сложнее, чем описанный выше метод. В этом методе вы можете установить свойство ScrollBars TextBox программно с помощью заданного синтаксиса:

Здесь ScrollBars представляют значения перечисления ScrollBars, которые указывают, отображается ли многострочный элемент управления TextBox без полос прокрутки, горизонтальной полосы прокрутки, вертикальной полосы прокрутки или обоих. И он выдаст исключение InvalidEnumArgumentException, если значение, назначенное свойству, не находится в диапазоне допустимых значений для перечисления. Следующие шаги используются для установки свойства ScrollBars TextBox:

  • Шаг 1. Создайте текстовое поле с помощью конструктора TextBox (), предоставляемого классом TextBox.
  • Шаг 2: После создания TextBox установите свойство ScrollBars для TextBox, предоставляемого классом TextBox.
  • Шаг 3: И наконец добавьте этот элемент управления textbox, используя метод Add ().

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

Представляет стандартную полосу ползунка Windows.

Примеры

В следующем примере кода выводится форма, содержащая TrackBar элемент управления и TextBox элемент управления. В примере показано задание Maximum свойств, TickFrequency , LargeChange и SmallChange и обработка Scroll события. TextBoxСодержимое обновляется до Value значения свойства при Scroll возникновении события.

Комментарии

TrackBar— Это элемент управления с возможностью прокрутки, аналогичный ScrollBar элементу управления. Можно настроить диапазоны, с помощью которых значение Value Свойства полосы прокрутки прокручивается, установив свойство, Minimum чтобы указать нижнюю границу диапазона, и Maximum свойство, чтобы указать верхнюю границу диапазона.

LargeChangeСвойство определяет приращение, которое добавляется или вычитается из Value свойства при щелчке мышью с любой стороны ползунка. Полоса прокрутки может отображаться горизонтально или вертикально.

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

Конструкторы

Инициализирует новый экземпляр класса TrackBar.

Свойства

Получает объект AccessibleObject, назначенный элементу управления.

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

Возвращает или задает описание элемента управления, используемого клиентскими приложениями со специальными возможностями.

Возвращает или задает имя элемента управления, используемого клиентскими приложениями со специальными возможностями.

Возвращает или задает доступную роль элемента управления.

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

Возвращает или задает границы контейнера, с которым связан элемент управления, и определяет способ изменения размеров элемента управления при изменении размеров его родительского элемента.

Возвращает или задает местоположение, в котором выполняется прокрутка этого элемента управления в ScrollControlIntoView(Control).

Возвращает или задает значение, указывающее, меняется ли высота или ширина полосы ползунка автоматически.

Возвращает или задает цвет фона для элемента управления.

Получает или задает фоновое изображение для элемента управления TrackBar.

Получает или задает значение ImageLayout; однако задание этого свойство не влияет на элемент управления TrackBar.

Возвращает или задает макет фонового изображения в соответствии с перечислением ImageLayout.

Возвращает или задает значение BindingContext для элемента управления.

Возвращает расстояние в пикселях между нижней границей элемента управления и верхней границей клиентской области контейнера.

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

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

Возвращает значение, указывающее, может ли элемент управления получать фокус.

Определяет, могут ли вызываться события в элементе управления.

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

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

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

Возвращает прямоугольник, представляющий клиентскую область элемента управления.

Возвращает или задает высоту и ширину клиентской области элемента управления.

Возвращает название организации или имя создателя приложения, содержащего элемент управления.

Возвращает объект IContainer, который содержит коллекцию Component.

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

Возвращает или задает контекстное меню, связанное с элементом управления.

Возвращает или задает объект ContextMenuStrip, сопоставленный с этим элементом управления.

Возвращает коллекцию элементов управления, содержащихся в элементе управления.

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

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

Возвращает привязки данных для элемента управления.

Возвращает или задает курсор по умолчанию для элемента управления.

Получает значение, определяющее режим редактора методов ввода для TrackBar.

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

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

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

Возвращает внутренние промежутки в содержимом элемента управления в пикселях.

Возвращает размер по умолчанию для объекта TrackBar.

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

Получает значение DPI для устройства, на котором сейчас отображается элемент управления.

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

Получает значение, указывающее, находится ли базовый класс Control в процессе удаления.

Возвращает или задает границы элемента управления, прикрепленные к его родительскому элементу управления, и определяет способ изменения размеров элемента управления с его родительским элементом управления.

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

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

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

Возвращает список обработчиков событий, которые прикреплены к этому объекту Component.

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

Возвращает или задает высоту шрифта элемента управления.

Возвращает цвет полосы ползунка.

Возвращает дескриптор окна, с которым связан элемент управления.

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

Возвращает или задает высоту элемента управления.

Возвращает или задает режим редактора метода ввода, поддерживаемый данным элементом управления.

Получает или задает режим IME элемента управления.

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

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

Указывает, является ли один из предков этого элемента управления узлом и этим сайтом в Десигнмоде. Это свойство доступно только для чтения.

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

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

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

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

Получает кэшированный экземпляр механизма размещения элемента управления.

Возвращает или задает расстояние в пикселях между левой границей элемента управления и левой границей клиентской области его контейнера.

Возвращает или задает координаты левого верхнего угла элемента управления относительно левого верхнего угла его контейнера.

Возвращает или задает расстояние между элементами управления.

Получает или задает верхнюю границу диапазона, внутри которого работает данный объект TrackBar.

Возвращает или задает размер, являющийся верхней границей, которую может указать метод GetPreferredSize(Size).

Получает или задает нижнюю границу диапазона, внутри которого работает данный объект TrackBar.

Возвращает или задает размер, являющийся нижней границей, которую может указать метод GetPreferredSize(Size).

Возвращает или задает имя элемента управления.

Возвращает или задает значение, указывающее ориентацию (горизонтальную или вертикальную) полосы прокрутки.

Возвращает или задает расстояние между содержимым элемента управления TrackBar и его краями.

Возвращает или задает заполнение в элементе управления.

Возвращает или задает родительский контейнер элемента управления.

Возвращает размер прямоугольной области, в которую может поместиться элемент управления.

Возвращает имя продукта сборки, содержащей элемент управления.

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

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

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

Это свойство устарело.

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

Возвращает расстояние в пикселях между правой границей элемента управления и левой границей клиентской области его контейнера.

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

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

Получает значение, определяющее масштабирование дочерних элементов управления.

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

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

Возвращает или задает местонахождение элемента управления.

Возвращает или задает высоту и ширину элемента управления.

Получает или задает значение, добавляемое или вычитаемое из свойства Value при перемещении указателя полосы прокрутки на маленькое расстояние.

Возвращает или задает последовательность перехода по клавише TAB между элементами управления внутри контейнера.

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

Возвращает или задает объект, содержащий данные об элементе управления.

Получает или задает текст объекта TrackBar.

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

Возвращает или задает значение, определяющее способ отображения делений на полосе ползунка.

Возвращает или задает расстояние в пикселях между верхней границей элемента управления и верхней границей клиентской области его контейнера.

Получает родительский элемент управления, не имеющий другого родительского элемента управления Windows Forms. Как правило, им является внешний объект Form, в котором содержится элемент управления.

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

Возвращает или задает численное значение, представляющее текущее положение ползунка на полосе.

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

Возвращает или задает ширину элемента управления.

Данное свойство не применимо к этому классу.

Методы

Уведомляет клиентские приложения со специальными возможностями об указанном перечислении AccessibleEvents для указанного дочернего элемента управления.

Уведомляет клиентские приложения со специальными возможностями об указанном перечислении AccessibleEvents для указанного дочернего элемента управления.

Начинает инициализацию TrackBar, используемого в форме или другим компонентом. Инициализация происходит во время выполнения.

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

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

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

Помещает элемент управления в начало z-порядка.

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

Создает для элемента управления новый объект с поддержкой специальных возможностей.

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

Создает новый экземпляр коллекции элементов управления для данного элемента управления.

Создает объект Graphics для элемента управления.

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

Удаляет дескриптор, связанный с элементом управления.

Освобождает все ресурсы, занятые модулем Component.

Освобождает неуправляемые ресурсы, используемые объектом Control и его дочерними элементами управления (при необходимости освобождает и управляемые ресурсы).

Начинает операцию перетаскивания.

Поддерживает отрисовку в указанном точечном рисунке.

Завершает инициализацию TrackBar, используемого в форме или другим компонентом. Инициализация происходит во время выполнения.

Получает возвращаемое значение асинхронной операции, представленное переданным объектом IAsyncResult.

Определяет, равен ли указанный объект текущему объекту.

Возвращает форму, в которой находится элемент управления.

Устанавливает фокус ввода на элемент управления.

Получает указанный объект AccessibleObject.

Получает значение, указывающее, как будет вести себя элемент управления, когда его свойство AutoSize включено.

Возвращает дочерний элемент управления, имеющий указанные координаты.

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

Возвращает следующий объект ContainerControl в цепочке родительских элементов управления данного элемента.

Служит хэш-функцией по умолчанию.

Извлекает объект обслуживания во время существования, который управляет политикой времени существования данного экземпляра.

Возвращает следующий или предыдущий элемент среди дочерних элементов управления в последовательности клавиши TAB.

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

Возвращает границы, внутри которых масштабируется элемент управления.

Возвращает объект, представляющий службу, предоставляемую классом Component или классом Container.

Возвращает значение указанного бита стиля элемента управления для данного элемента управления.

Определяет, находится ли элемент управления на верхнем уровне.

Возвращает объект Type для текущего экземпляра.

Скрывает элемент управления от пользователя.

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

Вызывается после добавления элемента управления в другой контейнер.

Делает недействительной всю поверхность элемента управления и вызывает его перерисовку.

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

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

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

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

Вызывает событие GotFocus для указанного элемента управления.

Вызывает событие LostFocus для указанного элемента управления.

Вызывает событие Click для указанного элемента управления.

Вызывает событие Paint для указанного элемента управления.

Вызывает событие PaintBackground для указанного элемента управления.

Определяет, является ли символ входным символом, который распознается элементом управления.

Определяет, является ли заданная клавиша обычной клавишей ввода или специальной клавишей, нуждающейся в предварительной обработке.

Преобразует логическое значение DPI в эквивалентное значение DPI DeviceUnit.

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

Создает неполную копию текущего объекта Object.

Создает неполную копию текущего объекта MarshalByRefObject.

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

Полосы прокрутки — важная составляющая любой графической среды. Они улучшают наглядность и облегчают работу пользователя. Полосы прокрутки удобны при отображении любых объектов (текста, графики, таблиц, записей баз данных, картинок, Web-страниц), чьи размеры превышают размеры клиентской области программы.

Полосы прокрутки могут быть ориентированы вертикально (для перемещения вверх–вниз) или горизонтально (вперед–назад). Щелчок по стрелкам на концах полосы прокрутки перемещает документ на небольшое расстояние — обычно на одну строку вверх или вниз (для вертикальной полосы прокрутки). Щелчок по области, расположенной между стрелками, вызывает перемещение на большее расстояние. Ползунок перемещается по длине полосы прокрутки, отображая примерное положение видимой части относительно общей длины документа. Для перехода в определенную область документа можно перетащить ползунок мышью. Относительно недавно размер ползунка на полосе прокрутки стал изменяться, отражая пропорцию видимой части ко всему документу.

Полосы прокрутки можно добавить к форме двумя способами. Первый — создать элементы управления типа VScrollBar и HScrollBar и разместить их в любой части клиентской области программы. Работа полос прокрутки настраивается свойствами этих объектов. При использовании таких полос прокрутки инициируются определенные события. Мы будем работать с такими элементами управления в главе 12.

Второй способ проще. Его часто называют автопрокруткой (auto-scroll), и именно его мы используем в этой главе.

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

Включить автопрокрутку можно и без каких бы то ни было элементов управления. Я рассмотрю оба способа, а вы уж выбирайте.

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


Это позволит конечному пользователю выбрать значение от 0 до 100 путем перетаскивания кнопки (называемой указателем) вдоль линии.

Шкала


Я включил отображение шкалы, присвоив свойству TickPlacementзначение, отличное от None, которое используется по умолчанию. В моем примере я хочу, чтобы шкала располагалась ниже линии, но вы можете использовать TopLeftили даже Both в качестве возможных значений, чтобы изменить её положение.

Также обратите внимание на мое использование свойства TickFrequency. По умолчанию оно равно 1, но в примере, где диапазон возможных значений изменяется от 0 до 100, это приведет к 100 рискам, которые необходимо будет отобразить в ограниченном пространстве. В таком случае имеет смысл увеличить свойство TickFrequency так, чтобы шкала выглядела менее переполненной.

Привязка к делениям

Если вы посмотрите на скриншот выше, вы увидите, что указатель находится между рисками. В этом есть смысл, поскольку между каждой риской имеется пять значений, как определено свойством TickFrequency. Кроме того, значение элемента управления Slider по умолчанию является double, что означает, что значение может быть (и вероятно будет) нецелым. Мы можем изменить это, используя свойство IsSnapToTickEnabled, как в приведенном ниже примере:


Обратите внимание, что я изменил значение TickFrequency на 10, а затем включил свойство IsSnapToTickEnabled. Это гарантирует, что указатель можно будет разместить только прямо на рисках, поэтому для этого примера его значение может быть только 0, 10, 20, 30, 40 и т. д.

Значение указателя

До сих пор мы просто использовали Slider для демонстрации, но, конечно, фактическая цель - прочитать его текущее значение и затем его использовать. Для этого Slider имеет свойство Value, которое вы, конечно, можете получать из кода или привязывать.

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


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


Реагирование на изменение значений

Конечно, в то время как привязки очень круты для многих целей, вы все равно можете реагировать на изменение значения ползунка из кода. К счастью для нас, Slider поставляется с событием ValueChanged, которое поможет нам в этом. Чтобы это проиллюстрировать, я создал более сложный пример с тремя ползунками, в котором мы меняем значения красного, зеленого и синего (RGB) цвета:


В части кода XAML у нас есть три DockPanel, каждая из которых имеет элементы управления Label, Slider и TextBox. Как и раньше, свойство Text элемента управления TextBox привязано к свойству Value ползунка.

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

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

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