Вход/Регистрация
Программирование КПК и смартфонов на .NET Compact Framework
вернуться

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

Шрифт:
Листинг 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,

path.Substring(0,

path.Length - 1).LastIndexOf(Path.DirectorySeparatorChar) + 1);

fillList;

 } else if (isFolder) {

path += lvi.Text + Path.DirectorySeparatorChar;

fillList;

 } else

ShellExecute.Start(path + lvi.Text);

 Cursor.Current = Cursors.Default;

}

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

  • Читать дальше
  • 1
  • ...
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: