Интересна история создания этого приложения. Сам автор оригинальной версии писал программу еще на Visual Studio .NET 2003 для смартфонов под управлением системы Smartphone 2003. Когда я скачал исходный код и попытался запустить его, то среда разработки Visual Studio .NET 2005 предложила конвертировать проект. Я согласился, в результате получил новую версию проекта. Теперь, после переделки, проект запускался в Visual Studio 2005 и использовал эмулятор Smartphone 2003. Но мне захотелось использовать пример для смартфонов Windows Mobile 2005. Для этого достаточно было в свойствах проекта выбрать другую платформу. Снова несколько минут раздумий, и Visual Studio выдает еще раз переделанный проект. Но и этого мне мало. Проект по-прежнему использует .NET Compact Framework 1.0. После выбора нужных значений свойств проекта, он стал использовать .NET Compact Framework 2.0. Осталось лишь перевести некоторые команды на русский язык и ввести новые возможности .NET Compact Framework 2.0 вместо старых конструкций, которые применялись для .NET Compact Framework 1.0.
Зачем нужен файловый менеджер
Файловый менеджер необходим как для разработчиков, так и для пользователей. С его помощью можно просматривать содержимое папок, удалять лишние файлы, создавать новые папки и выполнять другие операции с файлами. Трудно сказать, почему Microsoft решила не включать программу подобного рода в состав системы Windows Mobile. Кстати, производители смартфонов самостоятельно добавляют файловые менеджеры собственной разработки в состав стандартных программ. Но мы с вами напишем свою программу, что гораздо интереснее.
Графический интерфейс программы
У создаваемого приложения будет своя пиктограмма. При запуске программа будет отображать содержимое папки My Documents
. Сам графический интерфейс программы очень прост и понятен. Навигация по папкам осуществляется простым выделением нужной папки и нажатием кнопки Enter
. Для перехода на один уровень вверх нужно выделить папку, обозначенную двумя точками. Пункт меню Выход
закрывает файловый менеджер, а пункт Меню
позволяет выбрать выполняемую операцию (рис. 7.3).
Рис. 7.3. Общий вид файлового менеджера
Меню содержит команды для всех стандартных файловых операций. Пользователь может удалять, копировать, добавлять и переименовывать файлы. Также имеется возможность работы с ярлыками. Чтобы использовать эту возможность, нужно сначала выбрать файл, выполнить команду Копировать, затем перейти в нужную папку и выполнить команду Вставить ярлык. При выборе команды Свойства появляется соответствующее окно (рис. 7.4).
Рис. 7.4. Окно свойств
В этом окне отображается справочная информация о файле или папке. Пользователь сможет найти размер файла, дату его создания и атрибуты файла, которые можно модифицировать.
Код программы
Теперь можно приступить к написанию кода. При запуске программы выполняется обработчик события Form_Load
. При загрузке основной формы MainForm
работает код, приведенный в листинге 7.9.
ListViewHelper.SetGradient(listView);
string bs = Path.DirectorySeparatorChar.ToString();
// Устанавливаем начальную папку
this.path = bs + "My Documents" + bs;
// Заполняем список папок и файлов
fillList();
Сначала устанавливается внешний вид элемента listView
с градиентной закраской фона. Затем устанавливается папка по умолчанию My Documents
, которую программа открывает при загрузке. Метод fillList
заполняет список ListView
содержимым открываемой папки. Сам код метода приведен в листинге 7.10.
///
/// Заполнение ListView списком папок и файлов
///
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]);