Чтение онлайн

ЖАНРЫ

Программирование КПК и смартфонов на .NET Compact Framework

Климов Александр Петрович

Шрифт:

Графический интерфейс программы

У создаваемого приложения будет своя пиктограмма. При запуске программа будет отображать содержимое папки

My Documents
. Сам графический интерфейс программы очень прост и понятен. Навигация по папкам осуществляется простым выделением нужной папки и нажатием кнопки
Enter
. Для перехода на один уровень вверх нужно выделить папку, обозначенную двумя точками. Пункт меню
Выход
закрывает файловый менеджер, а пункт
Меню
позволяет выбрать выполняемую операцию (рис. 7.3).

Рис. 7.3.

Общий вид файлового менеджера

Меню содержит команды для всех стандартных файловых операций. Пользователь может удалять, копировать, добавлять и переименовывать файлы. Также имеется возможность работы с ярлыками. Чтобы использовать эту возможность, нужно сначала выбрать файл, выполнить команду Копировать, затем перейти в нужную папку и выполнить команду Вставить ярлык. При выборе команды Свойства появляется соответствующее окно (рис. 7.4).

Рис. 7.4. Окно свойств

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

Код программы

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

Form_Load
. При загрузке основной формы
MainForm
работает код, приведенный в листинге 7.9.

Листинг 7.9

ListViewHelper.SetGradient(listView);

string bs = Path.DirectorySeparatorChar.ToString;

// Устанавливаем начальную папку

this.path = bs + "My Documents" + bs;

// Заполняем список папок и файлов

fillList;

Сначала устанавливается внешний вид элемента

listView
с градиентной закраской фона. Затем устанавливается папка по умолчанию
My Documents
, которую программа открывает при загрузке. Метод
fillList
заполняет список
ListView
содержимым открываемой папки. Сам код метода приведен в листинге 7.10.

Листинг 7.10

/// <summary>

/// Заполнение ListView списком папок и файлов

/// </summary>

private void fillList {

 Cursor.Current = Cursors.WaitCursor;

 // Заполняем ListView списком папок и файлов

 // в выбранной папке

 ListViewItem lvi;

 listView.BeginUpdate;

 listView.Items.Clear;

 // Если не корневая папка

 if (path.Length > 1) {

// Добавляем папку "Вверх"

lvi = new ListViewItem(UPDIR);

lvi.ImageIndex = 0;

listView.Items.Add(lvi);

 }

 //
Добавляем папки

 string[] dirs = Directory.GetDirectories(path);

 ArrayList list = new ArrayList(dirs.Length);

 for(int i = 0; i < dirs.Length; i++)

list.Add(dirs[i]);

 list.Sort(new SimpleComparer);

 foreach(string dir in list) {

lvi = new ListViewItem(Path.GetFileName(dir));

lvi.ImageIndex = 0;

listView.Items.Add(lvi);

 }

 // Добавляем файлы

 string[] files = Directory.GetFiles(path);

 list = new ArrayList(files.Length);

 for(int i = 0; i < files.Length; i++)

list.Add(files[i]);

 list.Sort(new SimpleComparer);

 foreach(string file in list) {

lvi = new ListViewItem(Path.GetFileName(file));

lvi.ImageIndex = 1;

listView.Items.Add(lvi);

 }

 listView.EndUpdate;

 if (listView.Items.Count > 0) {

// выделяем первый элемент

listView.Items[0].Selected = true;

listView.Items[0].Focused = true;

 }

 Cursor.Current = Cursors.Default;

}

Итак, посмотрим, что делает метод

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

После этого наступает очередь файлов. Они сортируются и заносятся в список. Наконец, первый элемент списка выделяется другим цветом. Заодно на первом элементе устанавливается фокус ввода. Навигация по папкам и файлам осуществляется с помощью кнопок и дополняется кнопкой

Action
. Код навигации приведен в листинге 7.11.

Листинг 7.11

/// <summary>

/// Навигация по папкам и файлам

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

private void listView_ItemActivate(object sender, System.EventArgs e) {

 Cursor.Current = Cursors.WaitCursor;

 ListViewItem lvi = listView.Items[listView.SelectedIndices[0]];

 bool isFolder = lvi.ImageIndex == 0;

 if (lvi.Text == UPDIR) {

path = path.Substring(0,

Поделиться с друзьями: