Рейтинговые книги
Читем онлайн Программирование КПК и смартфонов на .NET Compact Framework - Александр Климов

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 4 5 6 7 8 9 10 11 12 ... 52

Рассматриваемые элементы управления размещаются в нижней части дизайнера формы рядом с элементом MainMenu. При работе с данными элементами прежде всего надо позаботиться о свойстве Filter, которое ограничивает список доступных файлов, фильтруя их по расширению. Свойство InitalDirectory содержит имя папки, в которой по умолчанию располагаются файлы. Если это свойство оставить пустым, то обзор файлов начнется с самой папки My Documents.

Основным методом для этих элементов является ShowDialog. После его вызова на экране отображается модальное окно, в котором пользователь должен нажать кнопку OK или Cancel. При этом метод ShowDialog возвращает значения DialogResult.OK и DialogResult.Cancel соответственно. Если получено значение DialogResult.OK, то пользователь нажал кнопку OK и в свойстве Filename содержится полный путь к выбранному файлу.

Пример работы с элементами OpenFileDialog и SaveFileDialog приведен в листинге 3.14.

Листинг 3.14

private void butOpen_Click(object sender, EventArgs e) {

 ofd.Filter = "DLL|*.dll|Картинки|*.jpg";

 ofd.InitialDirectory = "\My Documents\Templates";

 if (DialogResult.OK == ofd.ShowDialog()) {

  statusBar1.Text = ofd.FileName;

 } else {

  statusBar1.Text = "Вы нажали на кнопку Отмена!";

 }

}

Элементы HScrollBar и VScrollBar

Элементы управления HScrollBar и VScrollBar позволяют создавать полосы прокрутки для элементов, которые изначально не обладают этой функциональностью. Пользоваться этими полосами прокрутки совсем не сложно. Свойство Minimum задает значение элемента, когда ползунок находится в крайней левой или в крайней верхней позиции, для HScrollBar или VScrollBar соответственно. Свойство Maximum, задает максимальное значение для полос прокрутки. Значение свойства Value зависит от положения ползунка. Оно всегда находится в диапазоне между значениями свойств Minimum и Maximum.

Когда пользователь щелкает на полосе прокрутки, то свойство Value изменяется в соответствии со значением, заданным в свойстве LargeChange. Когда пользователь нажимает на кнопку навигации со стрелкой, то свойство Value изменяется в соответствии со значением, заданным в свойстве SmallChange. Следует обратить внимание на то, что если ползунок находится в положении, определяемом свойством Maximum, то свойство Value не равно значению Maximum. В этом случае значение свойства Value вычисляется по формуле Maximum - LargeChange + 1.

При изменении свойства Value инициируется событие ValueChanged. В листинге 3.15 приведен пример работы с полосами прокрутки.

Листинг 3.15

private void vScrollBar1_ValueChanged(object sender, EventArgs e) {

 this.lblScroll.Text = this.vScrollBar1.Value.ToString();

}

На рис. 3.10 показан внешний вид приложения. Если переместить ползунок в нижнюю часть полосы прокрутки, то значение в соответствии с формулой будет равно 91.

Рис. 3.10. Пример работы с полосами прокрутки

Список рисунков (ImageList)

Элемент управления ImageList уже рассматривался при знакомстве с элементом ToolBar. Элемент ImageList используется для хранения коллекций растровых изображений. Как и многие другие элементы, список рисунков не отображается во время выполнения программы, а используется как контейнер, из которого по мере необходимости извлекаются хранимые изображения. Как правило, данный элемент используется совместно с такими элементами управления, как ListView, TreeView и ToolBar.

Изображения можно добавлять в элемент управления во время работы приложения. Для этого используется метод Add, который входит в состав члена класса Images. Сами картинки могут располагаться как в отдельных файлах, так и в ресурсах приложения. В листинге 3.16 показано, как можно добавить картинку из ресурсов в ImageList, а затем отобразить ее в элементе интерфейса PictureBox.

Листинг 3.16

Bitmap image = new Bitmap(Assembly.GetExecutingAssembly(),

 GetManifestResourceStream(@"ImageList_CS.home.gif"));

imgList.Images.Add(image);

picTest.Image = imgList.Images[0];

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

Листинг 3.17

private void butFromImageListClick(object sender, EventArgs e) {

 picTest.Image = imgList.Images[1];

}

Все картинки, находящиеся в ImageList, имеют одинаковый размер. По умолчанию используется размер 16×16 пикселов. Разработчик может изменить размеры изображений, используя свойство ImageSize. Если менять отображаемые картинки при помощи таймера, то можно даже создать небольшую мультипликацию. Для этого достаточно список рисунков заполнить набором изображений, а затем поочередно отображать их в графическом поле.

Элемент PictureBox

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

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

Листинг 3.18

private void butFromFile_Click(object sender, EventArgs e) {

 picTest.Image = new Bitmap(@"Windowsbanner.gif");

}

Если использовать этот способ для добавления картинки, то нужно добавить изображение в проект и для свойства Build Action в окне свойств Properties задать значение Content. В процессе подготовки приложения к инсталляции изображение будет рассматриваться как часть программы. В рассмотренном примере использовалась готовая картинка, которая находится в папке Windows.

Также можно загрузить изображение из ресурсов приложения. В этом случае надо добавить картинку в проект и для свойства Build Action задать значение Embedded Resource. Тогда не придется специально включать изображения в состав инсталлятора. В листинге 3.19 приведен пример, иллюстрирующий добавление изображения из ресурсов.

Листинг 3.19

private void butRes_Click(object sender, EventArgs e) {

 // Загружаем из ресурсов

 picTest.Image = new Bitmap(Assembly.GetExecutingAssembly().

  GetManifestResourceStream("PictureBox_CS.kristina.jpg"));

}

Элемент ImageList имеет свойство ImageSize, которое задает размеры хранимых изображений. Перед загрузкой картинки в графическое поле можно установить требуемые размеры изображения с помощью данного свойства, как показано в листинге 3.20.

Листинг 3.20

private void butImgList_Click(object sender, EventArgs e) {

 // изменяем размеры картинки

 imageList1.ImageSize = new System.Drawing.Size(160, 120);

 // загружаем картинку с измененными размерами

 picTest.Image = imageList1.Images[0];

}

На рис. 3.11 показан внешний вид приложения, в котором для работы с изображениями применяются все три описанных варианта.

Рис. 3.11. Пример работы с элементом PictureBox

Элемент ListView

Элемент управления ListView похож на элемент ListBox, но вместо обычного текста данный элемент может показывать изображения. Фактически, правая часть рабочего окна Проводника в Windows XP является типичным примером использования этого органа управления. Элементы в ListView могут отображаться в виде таблицы, списка, а также как группа крупных и мелких значков. За способ отображения содержимого отвечает свойство View. Значение Details позволяет отображать содержимое в виде таблицы, значение List создает список, значение LargeIcon позволяет отображать элементы списка в виде больших пиктограмм, а значение SmallIcon отображает их как маленькие пиктограммы.

В режиме Details элемент управления ListView позволяет создавать дополнительные столбцы. Их можно добавлять как во время проектирования, так и во время исполнения программы. Пример добавления столбцов во время работы приложения приведен в листинге 3.21.

Листинг 3.21

private void Form1_Load(object sender, EventArgs e) {

 // Устанавливаем нужный вид

 listView1.View = View.Details;

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

 listView1.FullRowSelect = true;

 ColumnHeader columnHeader1 = new ColumnHeader();

 ColumnHeader columnHeader2 = new ColumnHeader();

 ColumnHeader columnHeader3 = new ColumnHeader();

 columnHeader1.Text = "Фамилия";

 columnHeader2.Text = "Имя";

 columnHeader3.Text = "E-mail";

 listView1.Columns.Add(columnHeader1);

1 ... 4 5 6 7 8 9 10 11 12 ... 52
На этой странице вы можете бесплатно читать книгу Программирование КПК и смартфонов на .NET Compact Framework - Александр Климов бесплатно.

Оставить комментарий