Жанр: Учеба
Си шарп: создание приложений для windows
...тесь, это повышает уровень
восприятия программы пользователем.
Рис. 21.1. Добавление элемента
управления Label к форме
приложения TestLists
МЕТКА-LinkLabel
LinkLabel представляет собой гиперссылку, которыми наполнен
Интернет. Разработчики Visual Studio .NET представили этот элемент
управления как разновидность метки (элемента управления Label). На мой
взгляд, LinkLabel более похож на кнопку, чем на метку.
БЕГУНОК - TrackBar
J ? Типичным примером применения элемента TrackBar является
регулятор уровня громкости в панели Windows. TrackBar может использоваться
в различных режимах: в горизонтальном или вертикальном
положении, с включенными черточками или без. Мы рассмотрим далее
использование элемента управления TrackBar на примере.
ИНДИКАТОР ПРОГРЕССА -ProgressBar
Чаще всего ProgressBar используют для отображения степени
завершенности той или иной задачи. Вы сталкивались с индикатором
прогресса, когда устанавливали на свой компьютер Visual Studio .NET.
260 Раздел I I I . Программирование для Windows
РЕГУЛЯТОР ЧИСЛЕННЫХ ЗНАЧЕНИИ -NumericUpDown
т лавм&от. Позволяет без помощи клавиатуры вводить численные значения
в поле для ввода. Вообще, данный элемент управления имеет три
возможности для ввода данных: щелчок мышкой на указатели вверхвниз,
использование кнопок вверх-вниз на клавиатуре или ввод данных
в поле ввода.
Для быстрейшего усвоения информации о работе с вышеуказанными
компонентами, давайте рассмотрим пример. Напишем приложение, в
котором бегунок и элемент управления NumericllpDown управляют индикатором
прогресса. Дополнительное условие: бегунок и NumericUpDown
должны работать синхронно. То есть, при изменении значения одного
элемента, значение другого должно изменятся автоматически на ту же
величину.
Создайте новый Windows Forms проект под названием Testlndicator.
Сохраните его в созданную для наших проектов папку. Переименуйте
файл Forml.cs в TestIndicatorForm.cs. Теперь добавьте на вашу форму следующие
элементы управления:
• TrackBar
• ProgressBar
• NumericUpDown.
Мне понравилось размещение, изображенное на рис. 21.2. Вы можете
расположить элементы по-своему.
Измените свойства элементов управления.
Свойства элемента TrackBarl:
Maximum -100
TickStyle - Both.
При этом TrackBar изменит свой вид. Бегунок примет прямоугольную
форму, а полоски появятся и сверху, и снизу от него. Это результат изменения
свойства TickStyle. Данное свойство определяет месторасположение
черточек элемента управления. В этом случае мы выбрали значение Both
(с обеих сторон). Кроме того, возможны расположения только сверху,
только снизу или вообще без черточек. Свойства Minimum и Maximum задают
минимальное и максимальное значение,
"гДЗЯНТ?":1 - ч Д° которых может изменяться TrackBar. В
данном случае мы задали максимальное
значение 100, а минимальное 0 (оставили по
умолчанию). То есть, когда бегунок будет
• находиться в крайнем левом положении,
значение его свойства Value будет равно 0, а
при нахождении бегунка в крайнем правом
положении свойство Value будет иметь зна-
•*" " " " - " "" чение 100.
Рис 21.2. проектирование формы Свойства объекта numericUpDownl остаприложения
Testlndicator вим по умолчанию. Элемент управления
Метки, индикаторы прогресса и бегунки 261
NumericUpDown также имеет свойства Minimum и Maximum. И по умолчанию,
свойство Minimum равно 0, свойство Maximum равно 100. Это соответствует
параметрам, установленным для объекта trackBarl. Хочу отметить
очень важное свойство компонента NumericUpDown - DecimalPlaces.
Оно определяет количество знаков после запятой. В нашем примере
это свойство необходимо оставить по умолчанию равным 0, однако при
необходимости получить большую точность, чем целое значение, следует
устанавливать значение свойства в соответствии с заданной точностью.
Измените значение свойства Text формы на "Управление движением".
Взгляните на код программы. Я не приводил код той части программы,
который был построен дизайнером. Он не имеет особого значения, а лишь
отражает визуальное содержимое формы в коде программы на языке С#.
using System;
using System.Drawing;
using System.Collections;
using System.ComponennModei;
using System.Windows.Forms;
namespace Testlndicator
/// "summary"
/// Summary description for FormI.
/// "/summary"
public class Forml: System.Windows.Forms.Form
{
private System.Windows.Forms.TrackBar trackBarl;
private System.Windows.Forms.ProgressBar progressBarl;
private System. Windows .Forms . NumerictlpDown numericUpDownl ;
/// "surnmary"
/// Required designer variable.
/// "/summary"
private System.ComponentModel.Container components = null;
public Forml()
{
// Required for Windows Form Designer support
InitializsComponent f);
// TODO: Add any constructor code after InitializeComponent call
/// "summary"
/// Clean up any resources being used.
/// "/summary"
protected override void Dispose! bool disposing )
262 Раздел I I I . Программирование для Windows
if( disposing )
if (components != null)
components.Dispose (];
base.Dispose( disposing );
jfregion Windows Form Designer generated code
tendregion
/// "summary"
/// The main entry point for the application.
/// "/summary"
(STAThread]
static void Main О
Application. Run (new FormlO);
Как вы уже, наверное, поняли, элементы NumericUpDownl и trackBarl
являются управляющими, а элемент progressBarl-управляемым. Давайте
зададим обработчики событий для управления индикатором прогресса.
Итак. Компонент TrackBar имеет событие Scroll, которое предназначено
для обработки перемещения указателя бегунка. Создайте функцию обработчик
для события Scroll, щелкнув два раза указателем мыши по имени
события в окне свойств. В код программы добавится функция с именем
trackBarl__Scroll. Измените ее код так, как показано ниже:
private void trackBarl Scroll(object sender, System.EventArgs e)
{
int Value = trackBarl.Value;
numericUpDownl.Value - Value;
progressBarl.Value = Value;
)
Теперь при движении курсора бегунка будут изменяться положение индикатора
прогресса и значение элемента numericUpDownl. Однако это еще
не полная синхронность работы элементов, потому что управление должно
вестись из двух элементов: бегунка и числового итератора (NumericUpDown),
а у нас сейчас управление возможно лишь от бегунка. Давайте
добавим обработчик события ValueChanged для элемента numericUpDownl.
Для этого щелкните два раза указателем мыши по имени события
Метки, индикаторы прогресса и бегунки 263
ValueChanged в окне свойств. В код программы добавится функция с именем
numericUpDownl_ValueChanged. Измените ее содержимое аналогично функции
trackBarl_Scroll.
private void numericUpDownl_ValueChanged(object sender. System.EventArgs e)
"
int Value = (int)numericUpDownl.Value;
trackBarl.Value = Value;
progressBarl.Value = Value;
)
Все, программа готова к эксплуатации.
Откомпилируйте и запустите ее. Попробуйте
изменить положение бегунка. При этом индикатор
прогресса и числовой итератор изменят
свои значения на соответствующие величины.
Попробуйте управлять индикатором прогресса
при помощи числового итератора. Эффект
будет аналогичный работе с бегунком. Попытайтесь
найти среднее положение всех элементов
управления (рис. 21.3).
IIIHIIIBI
Рис. 21.3. Окно приложения
"Управление движением"
22. ListView И TreeView
СПИСОК-ListView
FloppyI,H
wJLxalD'l {"_)
_J LQ ol DIJI E J
_J V'orl' №
a3" LonpactO
^sJ (_ommor ur "
-Ш Control Panel
"ti vl Flart
"Mec rleEn
*• Internet Espio ret
Compact Di^c (I:)
ommon on 'Cooker' (Q:)
j"fl Control Panel
ioker'(Q
Рис. 22.1. Проводник
Элемент управления
ListView предназначен для отображения
списков данных. Компонент
ListView отличается от
ListBox расширенным списком
возможностей: установка пиктограмм
для каждого элемента
списка, отображение данных
в нескольких колонках,
несколько стилей представления
элементов списка. Типичным
примером использования
элемента ListView является
правая сторона программы
"Проводник", которая входит в
стандартную поставку Microsoft
Windows (рис. 22.1).
ДЕРЕВО - TreeView
&т*вйюи Компонент TreeView предназначен для отображения данных в
виде дерева. Т. е. элементы представления начинаются с корня дерева и
отображаются вглубь. Примером может служить левая сторона программы
"Проводник", которая отображает дерево каталогов (см. рис. 22.1).
В левой половине окна располагается содержимое всего диска компьютера.
Все элементы списка имеют общий корень "Desktop", то есть все
элементы являются подпунктами одного общего корня. В правой стороне
отображается содержимое текущей вьщеленнои папки. В моем случае это
папка "My Computer". Правая панель отображает элементы в виде списка
с пиктограммами.
Давайте создадим приложение, которое будет способно добавлять и
удалять элементы в дерево и в список. Главное окно программы будет
содержать поле ввода данных, две кнопки: Добавить в список: и Добавить
в дерево, компонент ListView и компонент TreeView. В поле ввода
пользователь может набрать любую строку. При нажатии на соответствующую
кнопку содержимое поля переносится в ListView или TreeView.
ListView и TreeView 265
-s.l~i.xi I
ис* I
Рис. 22.2.
ViewApp
формы приложения
Для этого создайте новое С#
Windows-приложение под названием
ViewApp. Добавьте на форму
следующие элементы:
• ListView;
• TreeView;
• Button-два элемента;
• TextBox.
Я сделал это так, как показано
на рис. 22.2. Вы можете построить
интерфейс программы по
своему усмотрению.
Измените свойства добавленных
компонент:
button 1:
text - "добавить в список"
button2:
text - "добавить в дерево"
textBoxl:
text - ""
Обратимся к коду программы. (Я не привожу участок кода, сгенерированный
дизайнером во время визуального построения формы.)
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModei;
using System.Windows.Forms;
using System.Data;
namespace ViewApp
{
III "summary"
/// Summary description for Forml.
/// "/summary"
public class Forml: System.Windows.Forms.Form
{
private System.Windows.Forms.ListView listViewl;
private System.Windows.Forms.TreeView treeViewl;
private System.Windows.Forms.TextBox textBoxl;
private System.windows.Forms.Button buttonl;
private System.Windows.Forms.Button button2;
/// "summary"
/// Required designer variable.
/// "/summary"
private System.ComponentModei.Container components - null;
public Forml()
266 Раздел I I I . Программирование для Windows
// Required for Windows Form Designer support
//
InitializeConiponent () ;
//
// TODO: Add any constructor code after InitializeComponent call
/// "summary"
/// Clean up any resources being used.
/// "/summary"
protected override void Dispose( bool disposing
{
if( disposing )
{
if (components !- null)
1
components.Dispose();
base.Dispose ( disposing };
)
#region Windows Form Designer generated code
#endregion
/// "summary"
/// The main entry point for the application,
/// "/summary"
[STAThread]
static void Main О
Application.Run(new Forml()};
Работа со списком
Теперь нам предстоит наделить код функциональностью. В первую
очередь следует добавить обработчик нажатия кнопки Добавить в список.
Для этого щелкните два раза указателем мыши по кнопке на форListView
и TreeView 267
ме. Перед вами откроется окно кода, в который будет добавлена функция
buttonl_Click. Добавьте в функцию buttonl_Click код, представленный
ниже.
private void buttonl_Click(object sender. System.EventArgs e)
i
// индекс выделенного элемента
int idx;
// получаем список всех выделенных объектов
ListView.SelectedlndexCollection collection = listViewl.Selectedlndices;
// если выделенных объектов нет
if (collection.Count == 0 )
idx = 0 ; // берем нулевой индекс
// если выделенные объекты есть
else
// берем индекс нулевого объекта списка
idx = collection[0];
Управление списком и деревом
// добавляем новый элемент в список
listViewl.Items.Insert(idx, textBoxl.Text);
Откомпилируйте и запустите
программу. Выполните описанную
ниже последовательность действий:
наберите в поле ввода "Пять".
Нажмите кнопку Добавить в список.
Наберите в поле ввода "Три". Нажмите
кнопку Добавить в список.
Наберите в поле ввода "Один". Нажмите
кнопку Добавить в список.
Элементы расположатся в списке
так, как показано на рис. 22.3. Каждый
новый элемент будет добавлен
в начало списка. При этом все
предыдущие сместятся вниз.
Теперь выделите в списке пункт
"Три". Наберите в поле ввода "Два".
Нажмите кнопку Добавить в список. Элемент "Два" добавится перед элементом
"Три", но после элемента "Один" (там, где он и должен стоять).
Это произошло потому, что каждый новый элемент добавляется перед выделенным
элементом списка. Выделите элемент "Пять", наберите в поле
ввода "Четыре". Нажмите кнопку Добавить в список. Элемент "Четыре"
добавится между "Три" и "Пять". Давайте рассмотрим код, который заставляет
программу работать именно так.
ListView.SelectedlndexCollection collection = listViewl.Selecnedlndices;
Рис. 22.3. Добавление элементов в список
268 Раздел I I I . Программирование для Windows
Класс ListView содержит свойство Selected In dices со списком индексов
всех выделенных элементов списка. Вы можете выделить сразу несколько
элементов в списке, удерживая нажатой клавишу Shift или Ctrl.
if(collection.Count == 0 )
idx = 0;
Этот код предназначен для обработки ситуации, в которой ни один
элемент списка не выделен. В таком случае элемент будет добавлен в
начало списка.
else
idx = collection [01;
Если же в списке присутствует хотя бы один индекс, то новый элемент
будет добавлен перед самым первым выделенным элементом в списке.
Индекс первого выделенного элемента можно получить при помощи
выражения collectionfO].
listViewl.Items.Insert(idx, cextBoxl.Text);
Эта строка кода добавляет новый
элемент в список. Свойство
ListView. Items содержит коллекцию
всех элементов списка. Функция
Insert позволяет добавить новый
элемент в список. Новый элемент
может быть добавлен в любое место
списка. Первый параметр idx
указывает позицию нового элемента
в списке. Следующий параметр
содержит строку для отображения
в списке. После выполнения
в с е х ВЬ1Шеописанных операций
окно программы будет выглядеть
так, как показано на рис. 22.4. Рис. 22.4. Результаты работы со списком
Работа с деревом
Мы рассмотрели, как добавлять элементы в список. Но вторым объектом
нашей программы является дерево. Давайте рассмотрим работу с
деревом. Для начала необходимо добавить обработчик кнопки Добавить
в дерево. Для этого щелкните два раза левой кнопкой мыши по кнопке на
форме. При этом в программу добавится обработчик нажатия кнопки
button2-функция button2_Click. Измените код функции button2_Click так,
как представлено ниже:
private void button2_Click(object sender, System.EventArgs e)
f
// получаем выделенный узел
TreeNode node = treeViewl.SelectedNode;
// если выделенного узла нет
ListView и TreeView 269
if (node == null)
{
// добавляем новый элемент
// в корень основного дерева
treeViewl.Nodes.Add(textBoxl.Text) ;
)
II если имеется выделенный узел
else
{
// добавляем новый элемент
// как вложенный в выделенный узел
node.Nodes.Add(textBoxl.Text);
Откомпилируйте и запустите программу. Выполните описанную ниже
последовательность действий. При этом не делайте выделений элементов
дерева, пока об этом не будет сказано в описании.
Наберите в поле ввода строку "1-узел", нажмите кнопку Добавить в
дерево.
Наберите в поле ввода строку "2-узел", нажмите кнопку Добавить в
дерево.
Наберите в поле ввода строку "3-узел", нажмите кнопку Добавить в
дерево.
Выделите элемент "1-узел". Наберите в поле ввода строку "1-1-узел",
нажмите кнопку Добавить в дерево.
Выделите элемент "1-1-узел". Наберите в поле ввода строку "1-1-1-узел",
нажмите кнопку Добавить в дерево.
Выделите элемент "1-1-узел". Наберите в поле ввода строку "1-1-2-узел",
нажмите кнопку Добавить в дерево.
У вас должно было получиться такое дерево, как представлено на
рис. 22.5.
Как видите, дерево дает более
широкий спектр представления
информации. Элементы дерева
могут быть встроены в другие
элементы. Каждый элемент
дерева называется узлом. Если
узел содержит другие узлы, то
называется корнем дерева. В нашем
случае элементы "1-узел" и
"1-1-узел" являются корнями для
других элементов. Каждый элемент
дерева может стать корнем,
если встроить в него другие элементы
дерева. Корень может содержать
сколько угодно элемен,-Я
Управление списком и деревом
-1 1-уэел
_ 1-1 -узел
i-1-i - узел
1-1-2-узел
?-узел
3-узеп
Рис. 22.5. Результаты работы с деревом
тов одного уровня. В нашем случае узел "1-1-узел" содержит два элемента
одного уровня "1-1-1-узел" и "1-1-2-узел".
Давайте рассмотрим код, который заставляет программу работать
именно таким образом:
TreeNode node = treeViewl.SelectedNode;
Класс TreeView имеет свойство SelectedNode. Это свойство возвращает
объект TreeNode, который выделен на текущий момент в дереве. Если в
дереве не выделен ни один элемент, то свойство SelectedNode возвращает
null.
if(node == null)
{
treeViewl.Nodes.Add(textBoxl.Text);
}
Если все-таки свойство SelectedNode вернет null, то элемент будет добавлен
в список первого уровня. Так были добавлены "1-узел", "2-узел" и
"3-узел". Свойство Nodes класса TreeView содержит коллекцию TreeNodeCollection
всех узлов первого уровня. Функция Add класса TreeNodeCollection
добавляет новый элемент в конец коллекции.
node.Nodes.Add(textBoxl.Text);
}
Если же один из элементов дерева выделен, то переменная node будет
содержать выделенный объект. Класс TreeNode имеет свойство Nodes,
которое так же, как и свойство Nodes объекта TreeView, возвращает объект
класса TreeNodeCollection. Каждый объект TreeNode содержит коллекцию
узлов, для которых он является родительским. Поэтому, когда вы выделили
узел "1-узел", новый элемент был добавлен в коллекцию его дочерних
узлов. Как и при выделении элемента "1-1-элемент", в коллекцию его
дочерних узлов были добавлены элементы "1-1-1-элемент" и "1-1-2-элемент".
Сохраните созданное нами приложение с именем ViewApp, оно нам еще
пригодится.
23. СПИОК ИЗОБРАЖЕНИЙ ImageList
ImageList
._, h ^eL- Компонент ImageList можно отнести к списку невидимых
элементов управления. Однако это будет неправильно. Скорее
ImageList является вспомогательным компонентом, который хранит изображения,
отображаемые другими элементами управления. ImageList используется
такими компонентами, как ListView, TreeView, Button, и многими
другими. ImageList содержит список изображений, Если какомулибо
объекту необходимо отобразить изображение, то необходимо
задать для соответствующего свойства лишь индекс элемента в списке
изображений.
ImageList может содержать изображения в формате BMP, JPG, GIF, PNG,
ICO, WMF, EMF. Для того чтобы построить список изображений, в Visual
Studio .NET разработан удобный мастер Image Collection Editor.
ИСПОЛЬЗОВАНИЕ ImageList И ListView
Давайте рассмотрим работу с компонентом
ImageList на примере. Для этого воспользуемся
предыдущим примером.
Откройте приложение ViewApp. Добавьте на
форму компонент ImageList. Он отобразится не на
форме, а в панели компонент ниже формы. Компонент
ImageList имеет свойство Images (рис. 23.1).
Это свойство отвечает за коллекцию изображений,
содержащихся в списке. Откройте окно редактирования
Image Collection Editor, нажав кнопку
с тремя точками в поле Collection окна свойств.
Перед вами откроется окно Image Collection Editor
(рис. 23.2).
Это окно позволяет добавить новое изображение
в коллекцию или удалить уже существующее.
Для того чтобы добавить новое изображение, вам
необходимо нажать кнопку Add. При этом Visual
Studio .NET предложит вам выбрать файл, содержащий изображение в одном
из доступных форматов. Вы можете выбрать любой файл, по своему
усмотрению. Я взял самый близко расположенный файл пиктограммы
"App.ico", созданный вместе с каркасом приложения. При этом миниатюри
Рис. 23.1. Окно свойств
ImageList
272 Раздел I I I . Программирование для Windows
Image Cgleclion tdilai
Рис, 23.2. Окно настройки коллекции изображений
Image Colled ion tdiloi
ное изображение пиктограммы
появится в списке Member
окна (рис. 23.3).
Список Members может содержать
сколько угодно элементов.
Для нашего примера
будет достаточно одного
элемента в списке. Закройте
Image Collection Editor, нажав
кнопку ОК.
Компонент ListView имеет
свойство SmalllmageList, которое
хранит список изображений,
закрепленный за ListView
объектом. Установите в окне
свойств объекта imagelistl
свойство SmalllmageList как
imageListl. Теперь за списком
listViewl будет закреплен список
изображений imageListl.
Далее давайте изменим код
нашей программы, для того
чтобы список мог содержать
не только текстовую информацию,
но и графическую. Программа
потребует минимальных
изменений. Класс ListViewItemsCollection
содержит
несколько вариантов функции Insert. Мы использовали Insertfint index, string
text). Другим вариантом функции является Insertfint index, string text, int
imagelndex). Третьим параметром этой функции является индекс изображения
в списке ImageList, которое было предварительно установлено для
ListView.
Замените вызов функции
listViewl.Items.Insert(idx,
textBoxl.Text);
внутри функции buttonl_Click
на
listViewl.Items.Insert(idx,
textBoxl.Text, 0);
Добавился лишь третий параметр
при вызове функции.
Однако попробуйте вновь запустить
программу. Добавьте
Рис. 23.4. Отображение пиктограмм с элементами В СПИСОК элементы "ОДИН" И
с п и с к а "Два". На этот раз список буРис.
23.3. Добавление нового изображения в список
Управление списком и деревом
; J
Спиок изображений ImageList 273
дет выглядеть гораздо симпатичнее. Вместе с текстовым представлением
элемента на экране будет отображаться пиктограмма (рис. 23.4).
Для всех элементов нашего списка пиктограмма будет одна и та же.
Однако вы можете установить в качестве пиктограммы любой элемент
списка изображений. Третьим параметром функции Insert является индекс
изображения из списка ImageList. Если ImageList содержит пять элементов,
то для установки пиктограммы с индексом 3 вам необходимо
вызвать функцию Insert как:
1istViewl.Iterns.Insert(idx, textBoxl.Text, 2) ;
ИСПОЛЬЗОВАНИЕ ImageList И TreeView
Так же, как пиктограммы в ListView компоненте, пиктограммы могут
использоваться другими компонентами. Использование ImageList схоже в
применении со всеми компонентами. Вот как выглядят ImageList вместе
с TreeView.
В окне свойств объекта treeViewl установите свойство ImageList в
imageListl.
Для того чтобы добавить отображение пиктограммы в дерево, измените
код в функции button2_Click. Замените вызов функции
node.Nodes.Add(textBoxl.Text) ;
на следующий код:
TreeNode newKode = new TreeNode ();
newNode.Text = textBoxl.Text;
newNode.Imagelndex = 0;
node.Nodes.Add(newNode);
Функция Add класса TreeNodeCo I lection так же перегружена, как и функция
Insert класса ListViewItemsCollection. Вторым вариантом функции Add является
Add(System.Windows.Forms.TreeNode node). Для того чтобы добавить текстовый
элемент с пиктографическим изображением в дерево, необходимо:
• установить у TreeView свойств
ImageList;
• создать элемент TreeNode;
• установить свойство Text;
• установить свойство Imagelndex;
• вызвать функцию TreeNode.Nodes.
Add().
Запустите программу с новым
кодом. Попробуйте добавить элементы
в дерево. Так же, как и в
списке, все узлы дерева будут
отображаться с пиктограммой Рис 233 И с ш ) : | |,: ю |,:пш0 пиктогрпмм
(рИС. 23.5). нентом TreeView
У| Управление списком ".деяШМ*!;!;
•
П
! j 1.1-.I.'CI tT J I i
Z 1C-.1C T .
- ir- IPI tri
"^} Э(1еменгЗ-1
D ЭлеменгЗ-2-i'
24. ПОЛОСЫ ПРОКРУТКИ
ОБЩИЕ СВЕДЕНИЯ
Горизонтальные и вертикальные полосы прокрутки широко
используются в приложениях Windows. Они обеспечивают интуитивный
способ передвижения по спискам информации и позволяют делать поля
для ввода данных очень большими.
Полоса прокрутки состоит из трех областей, которые нажимаются или
перемещаются для изменения значения полосы прокрутки.
Рассмотрим работу элемента на примере горизонтальной полосы прокрутки.
Нажатие левой стрелки уменьшает значение положения бегунка
на минимальное. Нажатие правой стрелки увеличивает значение положения
бегунка на минимальное. При нажатии курсором мыши в области
полосы прокрутки значение положения бегунка изменяется на величину,
большую, чем значение при нажатии на кнопки "влево" и "вправо". При
использовании реквизитов полос прокрутки мы можем полностью определять,
как работает каждый из них. Позиция бегунка - единственная
выходная информация из полосы прокрутки.
СВОЙСТВА ПОЛОС ПРОКРУТКИ
LargeChange SmallChange LargeChange -
\ \ значение, которое добавляетMinimum
i| ^ ,] ^ Jj Maximum СЯ ИЛИ ВЫЧИТЭеТСЯ ИЗ
/ /г ^ \ ния текущего положения бе11
Va!ue гунка; это величина, на которую
изменяется положение
Рис. 24.1. Свойства полос прокрутки я "
у 1 бегунка при нажатии курсора
в области полосы прокрутки.
Maximum - значение горизонтальной полосы прокрутки в крайнем правом
положении и значение вертикальной полосы прокрутки в крайнем
нижнем положении. Может принимать значения от -32,768 до 32,767.
Minimum - другое предельное значение - для горизонтальной полосы
прокрутки в крайнем левом положении и для вертикальной полосы прокрутки
в крайнем верхнем. Может принимать значения от -32,768 до 32,767.
SmallChange - приращение, значение, которое добавляется или вычитается
из значения текущего положения бегунка: значение, на которое изменяется
положение полосы прокрутки, когда нажата любая из стрелок
прокрутки.
Полосы прокрутки 275
Value - текущая позиция бегунка внутри полосы прокрутки. Если вы
устанавливаете это в коде, то визуальное положение бегунка перемещается
в соответствующую позицию.
СОБЫТИЯ ПОЛОСЫ ПРОКРУТКИ
Change - событие, генерируемое после того, как позиция бегунка изменилась.
Используйте это событие, чтобы считать новое значение положения
бегунка после любых изменений в полосе прокрутки.
Scroll - событие, вызываемое непрерывно всякий раз, когда бегунок передвигается.
Создайте новый Windows Forms проект с именем ScroUApp. Поместите
на форму элемен
...Закладка в соц.сетях